마이그레이션 체크리스트(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 태그 이미지를 사용하는 빌드 단계로 옮겨요. 런타임 이미지에는 셸이 포함되지 않으므로, 필수 아티팩트를 빌드 단계에서 복사해요. |