Image layers, OverlayFS và writable layer
Hiểu copy-on-write để tối ưu build, dữ liệu và debug.
Nắm bản chất
Docker/OCI images gồm các layers nội dung; runtime hợp nhất chúng thành root filesystem được container nhìn thấy. Writable layer của container được thêm vào trên các image layers bất biến. Với copy-on-write, ghi đè file từ layer thấp có thể tạo bản sao ở tầng ghi.
Build cache cũng gắn chặt với layers và các bước Dockerfile. Nếu
COPY . . thay đổi sớm, những bước tiếp theo có thể mất cache. Đặt
bước dependency installation dựa trên lockfile trước khi copy mã ứng dụng thường
cải thiện tốc độ rebuild.
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 image history --no-trunc nginx:stable-alpine
docker image inspect nginx:stable-alpine --format '{{json .RootFS.Layers}}'
docker system df -v
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
Build cùng Dockerfile hai lần để quan sát cache. Sửa đúng một file code và so sánh những build steps phải chạy lại.
Lỗi dễ mắc
Không lưu database production trong writable layer. Các layers và container lifecycle được tối ưu cho việc thay thế ứng dụng, không cho lưu trữ dữ liệu quan trọng.
Tự kiểm tra
Tại sao thay đổi file requirements sau bước COPY có thể buộc cài lại dependencies?Xem đáp án ↗
Vì input của build step thay đổi khiến cache key khác và các layers downstream phải rebuild.
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 ↗