Docker 다단계 빌드는 하나의 Dockerfile에서 여러 빌드 단계를 나누어 필요한 산출물만 최종 이미지로 옮기는 방식이다.
Docker 구성 요소 |
|---|
Docker · Docker 이미지 · Docker 컨테이너 · Dockerfile · Docker 볼륨 |
Docker 바인드 마운트 · Docker 네트워크 · Docker Compose · Docker 다단계 빌드 · Docker 빌드 캐시 |
원리
여러 FROM 지시문으로 단계를 만들고 COPY --from으로 이전 단계의 결과를 가져온다. 컴파일 도구와 실행 환경을 분리할 수 있다.
예시
첫 단계에서 Go 프로그램을 빌드하고 두 번째 단계에는 실행 파일과 필요한 런타임 자료만 복사하면 배포 이미지의 불필요한 내용을 줄일 수 있다.
주의할 점
작은 이미지가 자동으로 올바르게 실행되는 것은 아니다. 동적 라이브러리, 인증서, 시간대 자료 등 필요한 의존성을 확인하고 최종 단계에서도 취약점과 권한을 검토한다.