CHƯƠNG 04 · Volumes & Data Persistence•BÀI 13 / 80

Writable layer, bind mount và named volume

Đừng để dữ liệu sống phụ thuộc vào tuổi thọ container.

Nền tảng◷ 4 phút đọc1/4 trong chương

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

Container filesystem→Mount→Host persistence

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.

TÀI NGUYÊN ĐI KÈM

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
NGUỒN CHÍNH THỨC

Đố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 ↗