Devin.KR

컨테이너 이미지와 재현 가능한 실행

앞 모듈의 서비스를 고정된 이미지로 실행하고 설정과 데이터를 분리합니다.

진도 0%

레슨

  1. 이미지와 컨테이너의 수명

    빌드 산출물과 실행 상태를 구분합니다.

  2. 서비스 이미지 빌드

    빌드 문맥과 실행 사용자를 설정합니다.

  3. 환경 변수·볼륨·포트

    환경별 설정과 지속 데이터의 역할을 분리합니다.

  4. 버전 고정과 재실행

    태그와 digest 및 설정 변경을 기록합니다.

컨테이너 이미지와 재현 가능한 실행 미션

앞 모듈의 산출물을 이어받습니다. 앞 모듈의 서비스를 고정된 이미지로 실행하고 설정과 데이터를 분리합니다.

요구사항

  • m02 서비스를 컨테이너화하고 릴리스 명세에 실제 이미지 digest를 기록합니다.
  • 테스트·시연 환경의 포트와 환경 변수를 분리하고 안내판 데이터는 볼륨에 둡니다.
  • m02 solution의 소스·요청 로그·workspace·진단 검사를 보존하고 /identity와 파일 기반 /notices를 확장합니다.
  • 레지스트리 없는 실습에서는 실제 로컬 image ID를 imageDigest로 기록하고 digestKind=local-image-id, registryDigest=null로 구분합니다.
  • 검사한 이미지는 artifacts/notice-image.tar로 보관하고 명세에 archiveSha256을 기록하여 다음 모듈에 전달합니다.

완료 기준

  • 두 환경이 같은 이미지 digest를 사용하며 각 /health가 성공합니다.
  • 실행 사용자 UID가 0이 아니고 이미지 파일에 비밀 fixture가 없습니다.
  • 컨테이너 재생성 후 데이터가 유지되고 환경별 표시 이름이 다릅니다.
  • bash check.sh가 빌드·비루트 UID·비밀 레이어 제외·두 환경 HTTP·볼륨 격리·재생성 보존·실제 image ID 명세를 검사합니다. Docker 실행 검증은 external 대기입니다.
  • release.json은 일시적 검사 증거입니다. imageDigest는 동일 daemon의 config digest이며 registry manifest digest로 표시하지 않습니다.
bash check.sh
미션 시작 코드
모범 답안모범 답안 내려받기

검토 기준

  • 명령 기록과 관측 증거로 변경 이유를 설명합니다.
  • 다른 학습자가 README로 실행·실패 재현·검증을 따라갈 수 있습니다.