Manifest
KHOÁ DOCKERTỜ 05 / 34CHƯƠNG 01SỬA ĐỔI C
Tờ 05 · Chương 01Nhập môn

VolumeContainer là thứ dùng một lần — dữ liệu thì không

Xoá một container và tạo lại y hệt: cùng image, cùng lệnh, cùng tên. Sổ sách vẫn mất. Tờ này chỉ ra chỗ dữ liệu thật sự nằm, và vì sao cùng một image mà một bên trả HTTP 200 còn bên kia trả HTTP 403.

Thời lượng24 phút
Bản vẽ05 hình
Trình độNhập môn
Truy cậpLiên hệ
Lớp ghi · mỏng, ghi được/tmp/ghichu.txtmất cùng container, không báo trướcImage · chỉ đọc8 lớp dùng chungkhông sửa tại chỗ được — xem Tờ 04-v sotay-data:/dataContainer · thứ dùng một lầnMáy chủ · nơi dữ liệu ở lạiVolume sotay-data/var/lib/docker/volumesdocker rm không với tới đâydocker compose down -v thì có — và không hỏi lạiĐọc từ trên xuống — chỉ phần dưới đường kẻ sống lâu hơn container
01Hiện trường

Xoá một container, mất một sổ sách

Tờ 03 đã nói lớp ghi mất cùng container. Nhưng biết nhìn thấy là hai chuyện khác nhau, nên hãy nhìn thấy nó một lần cho dứt điểm.

bash · ghi một dòng sổ sách vào container
$ docker run -d --name sotay-mat alpine:3.22 sleep 600
195efffba4e6569415536cab04f2541e433dab45a61cafe3d3db825a56d36f55

$ docker exec sotay-mat sh -c 'echo "don hang 001: 250000d" > /data/sosach.txt'
$ docker exec sotay-mat cat /data/sosach.txt
don hang 001: 250000d

Dữ liệu có thật, đọc lại được. Bây giờ xoá container và tạo lại y hệt — cùng image, cùng lệnh, cùng tên.

bash · tạo lại y hệt, và không còn gì
$ docker rm -f sotay-mat
sotay-mat

$ docker run -d --name sotay-mat alpine:3.22 sleep 600
cf2cdc49f7a50d96f4c58b5eaa2e211b4ee8b41bdb09b093f836e9504c17ffc5

$ docker exec sotay-mat cat /data/sosach.txt
cat: can't open '/data/sosach.txt': No such file or directory
(ma thoat: 1)
Đây không phải lỗi

Đây là thiết kế. Container được làm ra để vứt đi và dựng lại — Tờ 01 đã nói vậy ngay từ đầu. Vấn đề là dữ liệu người dùng thì không được vứt đi. Bài này nói về chỗ để dữ liệu ở lại.

02Danh mục

Ba kiểu gắn, ba chỗ dữ liệu thật sự nằm

Docker cho ba cách đưa một thư mục từ ngoài vào container. Khác biệt duy nhất giữa chúng là dữ liệu nằm ở đâu trên máy chủ — bên trong container thì cả ba trông y như nhau.

KiểuDữ liệu nằm ởAi quản lýSống sót khi xoá container
Volume có tên/var/lib/docker/volumes/<tên>/_dataDocker
Bind mountĐường dẫn bất kỳ bạn chỉ địnhBạn
tmpfsRAM của máy chủNhân LinuxKhông

Quy tắc chọn gọn trong ba dòng: dữ liệu của ứng dụng thì dùng volume có tên; mã nguồn lúc đang lập trình thì dùng bind mount; thứ không được chạm vào đĩa thì dùng tmpfs.

RANH GIỚI
Hết phần mở công khai của tờ này

Phần còn lại của tờ này chưa mở công khai

Phía sau ranh giới này còn 9 mục · 5 bản vẽ tương tác · 9 khối đầu cuối chụp từ máy thật · phiếu nghiệm thu có chấm ở máy chủ. Phần bạn vừa đọc là mở đầu đầy đủ, không cắt giữa câu.

Phần còn lại nói về
  • Docker volume
  • Bind mount
  • tmpfs mount
  • Docker Compose
  • Sao lưu dữ liệu
  • Quyền hệ thống tệp

Nền tảng không có giỏ hàng: muốn học sớm cả khoá Docker từ số 0, bạn nhắn tin để hai bên trao đổi trực tiếp. Đầu mối: technical@techshield.vn. Đã có quyền rồi thì đăng nhập để mở tiếp.