Trong các ứng dụng thực tế, việc quản lý dữ liệu là một yếu tố quan trọng. Dữ liệu của ứng dụng cần được lưu trữ một cách an toàn và có thể được tái sử dụng khi container bị dừng hoặc xóa.
Docker Volume là một công cụ mạnh mẽ để quản lý dữ liệu bền vững (persistent data) trong Docker. Bài viết này sẽ giúp bạn hiểu cách Docker Volume hoạt động và cách sử dụng chúng.

Docker volumes
Docker Volume Là Gì?
Docker Volume là một cơ chế lưu trữ dữ liệu được Docker quản lý. Volume tồn tại độc lập với vòng đời của container, nghĩa là dữ liệu vẫn được lưu trữ ngay cả khi container bị xóa.
Tại sao sử dụng Docker Volume?
- Lưu trữ bền vững: Dữ liệu không bị mất khi container dừng hoặc xóa.
- Dễ dàng chia sẻ dữ liệu: Nhiều container có thể truy cập cùng một Volume.
- Hiệu suất cao: Volume được tối ưu hóa để sử dụng trong Docker so với việc sử dụng file system thông thường.
Các Loại Storage Trong Docker
Docker cung cấp ba cách chính để lưu trữ dữ liệu:
- Volumes: Quản lý bởi Docker, lưu trữ trong thư mục Docker.
- Bind Mounts: Gắn trực tiếp thư mục từ hệ thống host vào container.
- tmpfs Mounts: Lưu trữ dữ liệu tạm thời trong bộ nhớ (RAM).
Cách Sử Dụng Docker Volume
1. Tạo Docker Volume
Bạn có thể tạo một Volume bằng lệnh:
docker volume create my_volume
Kiểm tra các Volume hiện có:
docker volume ls
2. Sử dụng Volume trong Container
Khi chạy container, bạn có thể gắn Volume bằng cách sử dụng tùy chọn -v
hoặc --mount
:
Cách 1: Sử dụng -v
docker run -d -v my_volume:/data my_app_image
Trong đó:
my_volume
: Tên Volume./data
: Thư mục trong container mà Volume được gắn vào.
Cách 2: Sử dụng --mount
docker run -d --mount source=my_volume,target=/data my_app_image
Tùy chọn này cho phép định nghĩa rõ ràng hơn.
3. Chia sẻ Volume giữa các Container
Nhiều container có thể chia sẻ cùng một Volume để trao đổi dữ liệu:
-
Container 1:
docker run -d --name container1 --mount source=my_volume,target=/data my_app_image
-
Container 2:
docker run -d --name container2 --mount source=my_volume,target=/data my_other_app_image
4. Kiểm tra Volume
Bạn có thể kiểm tra thông tin chi tiết của một Volume:
docker volume inspect my_volume
5. Xóa Volume
Khi không còn cần sử dụng, bạn có thể xóa Volume để giải phóng không gian lưu trữ:
docker volume rm my_volume
Lưu ý: Volume không thể bị xóa nếu nó đang được sử dụng bởi container.
Ví Dụ Thực Tế
Sử dụng Volume để lưu trữ cơ sở dữ liệu
Giả sử bạn muốn chạy một container MySQL và lưu dữ liệu trong một Volume:
docker run -d \
--name mysql_container \
-e MYSQL_ROOT_PASSWORD=my_password \
--mount source=mysql_data,target=/var/lib/mysql \
mysql:latest
Trong ví dụ này:
mysql_data
là Volume lưu trữ dữ liệu của MySQL.- Dữ liệu vẫn tồn tại ngay cả khi container MySQL bị xóa.
Bind Mounts: Một Lựa Chọn Khác
Nếu bạn muốn container truy cập trực tiếp vào một thư mục cụ thể trên hệ thống host, bạn có thể sử dụng Bind Mounts:
docker run -d \
-v /path/on/host:/path/in/container \
my_app_image
Lưu ý:
- Bind Mounts không được quản lý bởi Docker.
- Cần cẩn thận khi chia sẻ các thư mục quan trọng của hệ thống host.
Tổng Kết
Docker Volume là một công cụ mạnh mẽ để quản lý dữ liệu bền vững trong các ứng dụng container. Hiểu và sử dụng Volume hiệu quả sẽ giúp bạn quản lý dữ liệu tốt hơn, đặc biệt trong các ứng dụng yêu cầu lưu trữ dài hạn như cơ sở dữ liệu hoặc các dịch vụ lưu trữ tệp.
Trong bài tiếp theo, chúng ta sẽ tìm hiểu về quy trình triển khai một ứng dụng thực tế với Docker.