🔥 Tối Ưu Kích Thước Docker Container – Bí Quyết Cho DevOps/Automation Engineer
Trong thế giới container, kích thước image đóng vai trò cực kỳ quan trọng. Không giống như VM có vòng đời dài, Docker container thường “ngắn ngủi” và phải được pull về nhiều lần từ registry. Một image 90 MB sẽ luôn dễ triển khai và nhanh hơn rất nhiều so với một image 2 GB.
Vậy làm sao để tối ưu kích thước image? Hãy xem qua một số nguyên tắc thực chiến:
1️⃣ Giảm số lượng layers trong Dockerfile
Mỗi khi bạn dùng RUN, Docker sẽ tạo thêm một layer → làm tăng kích thước image.
👉 Thay vì viết nhiều lệnh riêng lẻ:
RUN apt install vim RUN apt install git
Hãy gộp lại trong một RUN duy nhất:
RUN apt install git vim
Thậm chí có thể dùng cú pháp ** hoặc && để dễ đọc và quản lý:
RUN apt update && apt install -y \ git \ vim \ curl \ wget
2️⃣ Quản lý vòng đời Build
💡 Lưu ý: mỗi instruction trong Dockerfile sẽ tạo thành một bước (step) trong build. Bạn có thể kiểm soát chi tiết này qua log build.
3️⃣ Phân tích dung lượng từng layer
Sử dụng:
docker image history <image_name>
Ví dụ:
docker image history registry.git.lab/cisco-devops/containers/python37
Kết quả sẽ cho thấy layer nào ngốn dung lượng nhất (thường là RUN apt install hoặc ADD). Các lệnh như ENV, LABEL, CMD hầu như không tăng size.
4️⃣ Vòng đời của Docker Container
5️⃣ So sánh với VM
🎯 Content Review Question:
Instruction nào đánh dấu bắt đầu build trong Dockerfile?
✅ FROM
👉 Anh em DevOps/Automation Engineer, trong dự án thực tế, bạn thường dùng chiến thuật nào để giảm size Docker image? Multi-stage build? Alpine base image? Hay thủ thuật riêng?
Trong thế giới container, kích thước image đóng vai trò cực kỳ quan trọng. Không giống như VM có vòng đời dài, Docker container thường “ngắn ngủi” và phải được pull về nhiều lần từ registry. Một image 90 MB sẽ luôn dễ triển khai và nhanh hơn rất nhiều so với một image 2 GB.
Vậy làm sao để tối ưu kích thước image? Hãy xem qua một số nguyên tắc thực chiến:
1️⃣ Giảm số lượng layers trong Dockerfile
Mỗi khi bạn dùng RUN, Docker sẽ tạo thêm một layer → làm tăng kích thước image.
👉 Thay vì viết nhiều lệnh riêng lẻ:
RUN apt install vim RUN apt install git
Hãy gộp lại trong một RUN duy nhất:
RUN apt install git vim
Thậm chí có thể dùng cú pháp ** hoặc && để dễ đọc và quản lý:
RUN apt update && apt install -y \ git \ vim \ curl \ wget
2️⃣ Quản lý vòng đời Build
- Tạo Dockerfile → dùng docker build để sinh ra image.
- Tag image với -t:
- Nếu muốn chỉ định Dockerfile khác:
💡 Lưu ý: mỗi instruction trong Dockerfile sẽ tạo thành một bước (step) trong build. Bạn có thể kiểm soát chi tiết này qua log build.
3️⃣ Phân tích dung lượng từng layer
Sử dụng:
docker image history <image_name>
Ví dụ:
docker image history registry.git.lab/cisco-devops/containers/python37
Kết quả sẽ cho thấy layer nào ngốn dung lượng nhất (thường là RUN apt install hoặc ADD). Các lệnh như ENV, LABEL, CMD hầu như không tăng size.
4️⃣ Vòng đời của Docker Container
- Tạo & build: Dockerfile → docker build → image
- Chạy:
- Stop / Start container:
- Xoá image:
5️⃣ So sánh với VM
- VM: kích thước GB, khởi tạo lâu, vòng đời dài.
- Container: kích thước MB, pull nhanh, khởi tạo tức thì, vòng đời ngắn → càng nhỏ càng tốt.
🎯 Content Review Question:
Instruction nào đánh dấu bắt đầu build trong Dockerfile?
✅ FROM
👉 Anh em DevOps/Automation Engineer, trong dự án thực tế, bạn thường dùng chiến thuật nào để giảm size Docker image? Multi-stage build? Alpine base image? Hay thủ thuật riêng?