멀티 스테이지 빌드

중급 Docker

Mike Metzger

Data Engineering Consultant

싱글 스테이지 빌드

  • 일반적인 Docker 이미지는 단일 FROM 명령으로 생성됩니다
  • 베이스 이미지에 항목을 추가할수록 용량이 커지고 관리가 복잡해집니다
  • 사용 전에 컴파일이 필요한 애플리케이션을 생각해 봅시다
    • 필요한 구성요소를 모두 추가하고 컴파일한 뒤 최종 이미지를 구성할 수 있습니다
    • 이렇게 하면 사용하지 않아도 불필요한 내용이 이미지에 남는 경우가 많습니다
FROM ubuntu
RUN apt update
RUN apt install gcc -y
...
RUN make
CMD ["data_app"]
중급 Docker

멀티 스테이지 빌드

  • 멀티 스테이지 빌드는 여러 컨테이너를 사용합니다
  • 보통 하나 이상의 빌드 단계가 있습니다
  • 최종 구성요소를 최종 컨테이너 이미지에 복사합니다
  • 빌드 단계는 자동으로 제거됩니다
    • 공간을 절약하고 이미지 크기를 최소화합니다
  • Dockerfile에 추가 문법을 사용합니다
    • AS <alias>
    • COPY --from=<alias>
중급 Docker

멀티 스테이지 빌드 예시

# Create initial build stage
FROM ubuntu AS stage1

# Install compiler and compile code RUN apt install gcc -y ... RUN make
# Start new stage to create final image FROM alpine-base
# Copy from first stage to final COPY --from=stage1 /data_app /data_app
# Run application on container start CMD ["data_app"]
중급 Docker

연습해 봅시다!

중급 Docker

Preparing Video For Download...