Skip to content
An`s Weblog
Go back

Using Volumes for Persistent Storage

Tại sao nên dùng volumes thay vì bind mount?

Lợi íchMô tả
Dễ sao lưu và di chuyểnVolume được quản lý độc lập với container
Quản lý tốt qua Docker CLI/APIDễ inspect, xóa, tạo
Chia sẻ an toàn giữa nhiều containerVolume có thể dùng chung cho nhiều container
Hỗ trợ lưu trữ từ xaDùng driver như REX-Ray, Amazon EBS, NFS…
Tự động chép nội dung ban đầuNế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/pathGắn volume vào container
--mount type=volume,source=...,target=...Gắn volume chi tiết hơn
readonlyGắn volume chỉ đọc
docker volume inspectXem chi tiết volume
docker volume ls / rm / pruneQuản lý volume

Share this post:

Previous Post
Networking Overview
Next Post
Using Bind Mounts