Tại sao nên dùng volumes thay vì bind mount?
| Lợi ích | Mô tả |
|---|---|
| Dễ sao lưu và di chuyển | Volume được quản lý độc lập với container |
| Quản lý tốt qua Docker CLI/API | Dễ inspect, xóa, tạo |
| Chia sẻ an toàn giữa nhiều container | Volume có thể dùng chung cho nhiều container |
| Hỗ trợ lưu trữ từ xa | Dùng driver như REX-Ray, Amazon EBS, NFS… |
| Tự động chép nội dung ban đầu | Nếu mount lần đầu vào thư mục có sẵn file |
Ví dụ 1 – Mount volume với -mount
Tạo volume:
docker volume create html-volume
Chạy container nginx gắn volume:
docker container run -d \
--name nginx-volume1 \
--mount type=volume,source=html-volume,target=/usr/share/nginx/html \
nginx
Vì /usr/share/nginx/html chứa sẵn index.html, nên Docker sẽ chép nội dung gốc đó vào volume.
Kiểm tra volume đã chứa file:
docker volume inspect html-volume
sudo ls /var/lib/docker/volumes/html-volume/_data
Ví dụ 2 – Mount volume với -volume hoặc v
docker container run -d \
--name nginx-volume2 \
-v html-volume:/usr/share/nginx/html \
nginx
nginx-volume2 dùng chung volume với nginx-volume1.
Chỉnh sửa file qua container
Vào container:
docker exec -it nginx-volume1 /bin/bash
Cài Vim và sửa file:
apt-get update && apt-get install vim
vi /usr/share/nginx/html/index.html
→ Thay đổi sẽ được ánh xá lên tất cả container đang dùng cùng volume.
Ví dụ 3 – Mount volume với quyền chỉ đọc (read-only)
docker container run -d \
--name nginx-volume3 \
--mount type=volume,source=html-volume,target=/usr/share/nginx/html,readonly \
nginx
→ Dù volume là cùng html-volume, container không thể ghi.
Kiểm tra trong container:
docker exec -it nginx-volume3 /bin/bash
apt-get update && apt-get install vim
vi /usr/share/nginx/html/index.html
→ Nhận cảnh báo readonly.
Tóm tắt
| Flag | Ý nghĩa |
|---|---|
-v volume_name:/container/path | Gắn volume vào container |
--mount type=volume,source=...,target=... | Gắn volume chi tiết hơn |
readonly | Gắn volume chỉ đọc |
docker volume inspect | Xem chi tiết volume |
docker volume ls / rm / prune | Quản lý volume |
- Volumes là phương pháp lưu trữ bền vững được Docker khuyến nghị.
- Dễ chia sẻ, dễ quản lý, có thể mở rộng lên lưu trữ mạng hoặc cloud.
- So với bind mount, volumes an toàn hơn, độc lập hơn, và dễ dùng trong môi trường production.