Tối ưu hóa các image Docker liên quan đến việc giảm kích thước (nhỏ hơn, nhanh hơn, an toàn hơn) và cải thiện hiệu năng build (build nhanh hơn qua caching). Các kỹ thuật bao gồm base image tối thiểu, multi-stage build, tối ưu hóa layer, BuildKit, và thiết kế Dockerfile cẩn thận.
Giảm kích thước image
✓ Base image TỐI THIỂU:
- alpine (tí hon, ~5MB) — nhưng musl libc có thể gây vấn đề tương thích cho một số app
- các biến thể slim (ví dụ python:3.12-slim) — nhỏ hơn full, ít vấn đề tương thích hơn
- DISTROLESS — chỉ app + runtime, KHÔNG shell/trình quản lý gói (nhỏ nhất, an toàn nhất)
- scratch — base rỗng (cho các binary tĩnh, ví dụ Go) → image tối thiểu
✓ MULTI-STAGE build — build với công cụ, chỉ vận chuyển artifact (tiết kiệm kích thước lớn)
✓ Kết hợp các layer RUN + dọn dẹp TRONG cùng layer:
RUN apt-get update && apt-get install -y x && rm -rf /var/lib/apt/lists/*
(dọn dẹp trong một layer RIÊNG không thu nhỏ image — các tệp ở trong layer trước đó)
✓ .dockerignore — giữ rác ngoài context/image
✓ Loại bỏ cache, tệp tạm, dev dependency trong các image production
