Dựng nhiều giai đoạn

Docker nâng cao

Mike Metzger

Data Engineering Consultant

Dựng một giai đoạn

  • Ảnh Docker điển hình được tạo với một lệnh FROM
  • Mỗi phần bổ sung vào ảnh nguồn làm tăng dung lượng và khó quản lý hơn
  • Xét một ứng dụng cần biên dịch trước khi dùng
    • Có thể thêm mọi thành phần cần thiết vào ảnh, biên dịch, rồi cấu hình ảnh cuối để dùng
    • Thường để lại nội dung thừa trong ảnh dù không dùng
FROM ubuntu
RUN apt update
RUN apt install gcc -y
...
RUN make
CMD ["data_app"]
Docker nâng cao

Dựng nhiều giai đoạn

  • Dựng nhiều giai đoạn dùng nhiều container
  • Thường có một hoặc nhiều giai đoạn dựng
  • Thành phần cuối được sao chép vào ảnh container cuối
  • Các giai đoạn dựng được tự động loại bỏ
    • Tiết kiệm dung lượng, giảm kích thước ảnh
  • Dùng cú pháp bổ sung trong Dockerfile
    • AS <alias>
    • COPY --from=<alias>
Docker nâng cao

Ví dụ dựng nhiều giai đoạn

# Tạo giai đoạn dựng ban đầu
FROM ubuntu AS stage1

# Cài trình biên dịch và biên dịch mã RUN apt install gcc -y ... RUN make
# Bắt đầu giai đoạn mới tạo ảnh cuối FROM alpine-base
# Sao chép từ giai đoạn đầu sang ảnh cuối COPY --from=stage1 /data_app /data_app
# Chạy ứng dụng khi container khởi động CMD ["data_app"]
Docker nâng cao

Hãy luyện tập!

Docker nâng cao

Preparing Video For Download...