CHƯƠNG 02 · Linux bên trong Container•BÀI 08 / 80

Image layers, OverlayFS và writable layer

Hiểu copy-on-write để tối ưu build, dữ liệu và debug.

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

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

Image layers→overlay mount→writable layer

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.

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 ↗