마이그레이션 체크리스트(Migration checklist)

마이그레이션 체크리스트(Migration checklist)

Docker Hardened Images로 마이그레이션할 때 핵심 고려사항을 처리했는지 확인하는 체크리스트예요.

출처: 문서

본문

이 체크리스트를 사용해 Docker Hardened Images로 마이그레이션할 때 핵심 고려사항을 처리했는지 확인해요.

마이그레이션 고려사항(Migration considerations)

항목 필요한 조치
베이스 이미지(Base image) Dockerfile의 FROM 문을 현재 베이스 이미지 대신 Docker Hardened Image를 참조하도록 업데이트해요.
패키지 관리(Package management) 빌드 단계 동안 dev 태그 이미지에만 패키지를 설치해요. Alpine 기반 이미지에는 apk를, Debian 기반 이미지에는 apt를 사용해요. 필요한 아티팩트를 런타임 단계에 복사해요. 런타임 이미지에는 패키지 매니저가 없기 때문이에요.
비루트 사용자(Non-root user) 런타임 이미지는 기본적으로 nonroot로 실행되므로, 애플리케이션이 필요한 모든 파일과 디렉터리가 nonroot 사용자(UID 65532)가 읽고 쓸 수 있는지 확인해요.
멀티 스테이지 빌드(Multi-stage build) 빌드 도구와 패키지 매니저가 필요한 빌드 단계에는 dev 또는 sdk 태그 이미지를 사용해요. 최종 런타임 단계에는 non-dev 이미지를 사용해요.
TLS 인증서(TLS certificates) ca-certificates를 설치하는 단계를 제거해요. DHI에는 ca-certificates가 기본 포함되어 있기 때문이에요.
포트(Ports) 컨테이너 내부에서 애플리케이션이 1025 이상의 포트에서 수신하도록 구성해요. nonroot 사용자는 Kubernetes나 20.10 이전 버전의 Docker Engine에서 권한 있는 포트(1024 미만)에 바인딩할 수 없기 때문이에요.
엔트리포인트(Entry point) docker inspect 또는 이미지 문서를 사용해 선택한 DHI의 엔트리포인트를 확인해요. 애플리케이션이 다른 엔트리포인트에 의존한다면 Dockerfile의 ENTRYPOINT 또는 CMD 지시문을 업데이트해요.
셸 없음(No shell) 셸 명령(RUN, SHELL)은 dev 태그 이미지를 사용하는 빌드 단계로 옮겨요. 런타임 이미지에는 셸이 포함되지 않으므로, 필수 아티팩트를 빌드 단계에서 복사해요.

더 알아보기 (Learn more)