Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 🔥 Tối Ưu Kích Thước Docker Container – Bí Quyết Cho DevOps/Automation Engineer

    🔥 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
    • Tạo Dockerfile → dùng docker build để sinh ra image.
    • Tag image với -t:
    docker build -t dev-net-inv-image .
    • Nếu muốn chỉ định Dockerfile khác:
    docker build -f Dockerfile_frontend -t frontend-img .
    💡 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:
    docker run -itd -p 5000:5000 --name dev-net-inv dev-net-inv-image
    • Stop / Start container:
    docker stop <id> docker start <id>
    • Xoá image:
    docker image rm <image_id>
    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?
    Attached Files
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X