최소 또는 Distroless 이미지

최소 또는 Distroless 이미지 (Minimal or distroless images)

최소(distroless) 이미지가 무엇이고 어떤 이점·트레이드오프를 주는지 알아볼게요.

출처: 문서

본문

최소 이미지(때로는 distroless 이미지라고 함)는 패키지 매니저, 셸, 심지어 밑바탕 OS 배포판 같은 불필요한 구성 요소를 제거한 컨테이너 이미지예요. Docker Hardened Images(DHI)는 취약점을 줄이고 안전한 소프트웨어 전달을 시행하기 위해 이 최소 접근을 채택해요. Docker Official Images와 Docker Verified Publisher Images는 최소성과 보안에 대해 유사한 모범 사례를 따르지만, 더 넓은 사용 사례와의 호환성을 보장하기 위해 그렇게 많이 제거하지 않을 수 있어요.

최소 또는 distroless 이미지란 (What are minimal or distroless images?)

전통적인 컨테이너 이미지는 전체 OS를 포함하며, 종종 애플리케이션 실행에 필요한 것보다 많아요. 반대로 최소 또는 distroless 이미지는 다음만 포함해요:

  • 애플리케이션 바이너리
  • 그 런타임 의존성(예: libc, Java, Python)
  • 명시적으로 요구되는 구성이나 메타데이터

일반적으로 제외해요:

  • OS 도구(예: ls, ps, cat)
  • 셸(예: sh, bash)
  • 패키지 매니저(예: apt, apk)
  • 디버깅 유틸리티(예: curl, wget, strace)

Docker Hardened Images는 이 모델을 기반으로 더 작고 안전한 런타임 표면을 보장해요.

얻는 것 (What you gain)

이점 설명
더 작은 공격 표면 구성 요소가 적다는 것은 취약점이 적고 CVE에 덜 노출된다는 뜻
더 빠른 시작 더 작은 이미지 크기는 더 빠른 풀·시작 시간을 의미
개선된 보안 셸과 패키지 매니저가 없어 손상되어도 공격자가 할 수 있는 일을 제한
더 나은 규정 준수 특히 SBOM과 증명으로 감사·검증이 더 쉬움

공통 트레이드오프 다루기 (Addressing common tradeoffs)

최소 및 distroless 이미지는 강력한 보안 이점을 제공하지만, 컨테이너 작업 방식을 바꿀 수 있어요. Docker Hardened Images는 생산성을 유지하면서 보안을 강화하도록 설계됐어요.

우려 사항 Docker Hardened Images가 돕는 방식
디버깅 가능성 강화된 이미지는 기본적으로 셸과 CLI 도구를 제외해요. Docker Debug를 사용해 원래 컨테이너를 수정하지 않고 문제 해결용 디버그 사이드카를 일시적으로 붙이세요.
친숙함 DHI는 Alpine과 Debian 변형을 포함한 여러 기본 이미지를 지원하므로, 강화 관행의 이점을 누리면서 익숙한 환경을 고를 수 있어요.
유연성 런타임 불변성이 컨테이너를 안전하게 해줘요. 변경을 제어하려면 멀티 스테이지 빌드와 CI/CD를 사용하고, 개발 중에는 선택적으로 dev 중심 기본 이미지를 사용하세요.

최소성과 실용적 도구의 균형을 맞춤으로써 Docker Hardened Images는 보안이나 신뢰성을 희생하지 않고 현대 개발 워크플로우를 지원해요.

최소 이미지 사용 모범 사례 (Best practices for using minimal images)

  • 멀티 스테이지 빌드로 빌드 시점과 런타임 환경을 분리
  • 대화형 조사 대신 CI 파이프라인으로 이미지 동작 검증
  • Dockerfile에 런타임별 의존성을 명시적으로 포함
  • Docker Scout로 최소 이미지에서도 CVE를 지속적으로 모니터링

Docker Hardened Images를 통해 최소 또는 distroless 이미지를 채택함으로써 자동화, 명확성, 위험 감소를 위해 설계된 더 안전하고 예측 가능하며 프로덕션 준비된 컨테이너 환경을 얻을 수 있어요.

더 알아보기 (Learn more)