Writable layer, bind mount và named volume
Đừng để dữ liệu sống phụ thuộc vào tuổi thọ container.
Nắm bản chất
Writable container layer có vòng đời gắn với container. Bind mount ánh xạ trực tiếp đường dẫn host vào container, hữu ích khi phát triển. Named volume được Docker quản lý độc lập với container và thường là lựa chọn đơn giản hơn cho dữ liệu dịch vụ.
Mount path phải phù hợp với ứng dụng. Bind mount có thể che khuất những file đã có trong image ở cùng mount point. Volume cũng cần quyền sở hữu và filesystem permissions phù hợp với UID bên trong container.
Luồng hoạt động
Hãy tự giải thích mỗi mũi tên: dữ liệu, quyền hoặc tín hiệu nào được truyền qua bước này?
Lệnh & cấu hình mẫu
docker volume create handbook-data
docker run --rm -v handbook-data:/data alpine:3.20 sh -c 'date > /data/created.txt'
docker run --rm -v handbook-data:/data alpine:3.20 cat /data/created.txt
docker volume inspect handbook-data
Lệnh có placeholder hoặc phụ thuộc môi trường thì cần thay thông tin thực tế, kiểm tra quyền và chỉ thực hiện trên tài nguyên được phép.
Bài tập 10–20 phút
Tạo và đọc lại file qua hai container khác nhau. Thử
docker rm container rồi kiểm tra volume vẫn còn.
Lỗi dễ mắc
docker compose down -v có thể xóa named volumes do project quản
lý. Không dùng trên database production khi chưa rõ dữ liệu nào sẽ bị mất.
Tự kiểm tra
Khác nhau lớn nhất giữa `down` và `down -v` là gì?Xem đáp án ↗
down -v còn xóa những volumes thuộc phạm vi lệnh, có nguy cơ
mất dữ liệu bền vững.
Học thêm qua lab
Bài học nền tảng có thể thực hiện trực tiếp bằng các lệnh trên; bảng tra cứu nhanh giúp ôn tập.
→ Mở bảng lệnh tra cứu nhanhĐối chiếu tài liệu gốc
Cú pháp và khả năng hỗ trợ có thể thay đổi theo phiên bản. Trước khi dùng Production, hãy kiểm tra tài liệu tương ứng.
Mở tài liệu chính thức ↗