KoreaDevKNOWLEDGE SHARING

콘텐츠 유형학습하기

AI INFRASTRUCTURE · 06 / 12

컨테이너와 레지스트리

OCI image와 container runtime을 이해하고 재현 가능한 build·SBOM·서명·registry·폐쇄망 반입을 운영합니다.

난이도
중급
구성
핵심 단원 3개 · 판단 활동 · 3단계 평가

NEW HIRE ONBOARDING

첫 업무를 받는 순서로 시작합니다

중학교를 졸업하고 처음 IT 업무를 맡은 신입사원도 따라올 수 있도록, 어려운 정의보다 상황·할 일·증거·보고할 경계를 먼저 확인합니다.

  1. 01

    상황을 한 문장으로 읽기

    image manifest·layer·runtime 격리·SBOM·signature·registry·폐쇄망 chain of custody를 한 digest에 연결합니다.

  2. 02

    오늘 맡은 일

    Registry 운영과 폐쇄망 반입의 중단 조건과 복구 증거를 작업 기록으로 작성할 수 있다.

  3. 03

    완료를 보여 주는 증거

    공식 문서와 교육용 출력 판독 검토. 실장비 명령·성능 시험은 미확인입니다.

  4. 04

    멈추고 선임에게 확인할 경계

    배포 승인 뒤 `model-api:prod` tag의 digest가 바뀌었습니다. 어떻게 합니까?

낯선 용어 먼저 풀기

OCI(Open Container Initiative)
image·runtime·distribution 등 container 상호운용 규격을 정의하는 프로젝트입니다.

이 과정의 운영 질문

같은 tag가 아니라 같은 digest와 공급망 증거를 어떻게 옮길까?

image manifest·layer·runtime 격리·SBOM·signature·registry·폐쇄망 chain of custody를 한 digest에 연결합니다.

CORE UNIT 1 / 3

OCI image와 container runtime

image·layer·digest와 process 격리 경계를 설명합니다.

난이도
중급
구성
강의 5개 · 실습 2개 · 평가

도해·표 자료: 각 강의의 공식 1차 출처를 바탕으로 저자 구성. 원문과 검토일은 해당 강의 끝에서 확인합니다.

PREREQUISITE CHECK

본문을 읽기 전에 확인할 세 가지

정답을 외우는 시험이 아닙니다. 질문을 먼저 생각한 뒤 해설을 열어 이번 과목에서 사용할 바탕 개념을 확인하십시오.

1이 단원에서 실제 장비에 명령을 전송합니까?

아닙니다. 교육용 출력을 브라우저에서 읽고 판단합니다. 별도 재현은 승인된 격리 환경에서만 수행합니다.

2실습 전에 확인할 권한과 환경은 무엇입니까?

rootless 우선·registry project 관리자. TLS registry와 격리 air-gap staging.

3처음 보는 값과 아직 실행하지 않은 시험은 어떻게 적습니까?

미확인으로 기록합니다. 교육용 예상 출력과 실제 측정값을 구분하고, 승인 없는 작업으로 빈칸을 채우지 않습니다.

TEXTBOOK GUIDE

개념의 배경부터 판단 기준까지 읽는 본문

IT를 처음 접하는 독자도 용어를 암기하지 않고 원인과 결과를 연결할 수 있도록 한 절씩 이어서 설명합니다.

  1. OCI image와 container runtime의 구성요소와 실패 경계를 구성도로 설명할 수 있다.
  2. OCI image와 container runtime의 상태를 명령 출력과 관측값으로 판정할 수 있다.
  3. OCI image와 container runtime의 중단 조건과 복구 증거를 작업 기록으로 작성할 수 있다.
OCI image와 container runtime 실습 환경과 안전 경계
하드웨어container host·private registry fixture
소프트웨어Ubuntu 24.04·containerd 1.7·Docker/BuildKit·cosign
필요 권한rootless 우선·registry project 관리자
네트워크TLS registry와 격리 air-gap staging

공식 문서와 교육용 출력 판독 검토. 실장비 명령·성능 시험은 미확인입니다.

적용 버전: OCI Image Specification 1.1.x · containerd 1.7.x fixture · 원고 검토일: 2026-09-01

CONCEPT FLOW

각 장은 이렇게 연결됩니다

각 장은 따로 외우는 단답이 아닙니다. 왼쪽에서 오른쪽으로 따라가며 앞 장의 개념이 다음 판단에 어떻게 쓰이는지 먼저 살펴보세요.

  1. 1장image index에서 확인을 시작합니다
  2. 2장manifest의 실습 대상을 고정합니다
  3. 3장runtime bundle의 출력과 의미를 구분합니다
  4. 4장container의 진행과 중단을 결정합니다
  5. 5장OCI image와 container runtime의 복구를 재검증합니다
OCI image와 container runtime의 전체 지도입니다. 아래 장문 해설과 각 장을 읽다가 길을 잃으면 이 순서로 돌아오세요.

CONTROLLED EXPLANATION

확인할 증거를 한 단계씩 따라갑니다

현재 설명 · 1/5 · image index에서 확인을 시작합니다

다음 연결: manifest의 실습 대상을 고정합니다

  1. image index에서 확인을 시작합니다

    원인을 추측해서 설정부터 바꾸지 않습니다. 다음 증거를 같은 시각대의 기록으로 묶으면 어느 경계에서 기대 상태가 깨졌는지 다른 운영자도 재현할 수 있습니다.

  2. manifest의 실습 대상을 고정합니다

    실습 상황:: multi-architecture image fixture에서 amd64 manifest digest를 찾고 실행 container의 cgroup limit을 확인합니다. 수행 지시:: 브라우저에서는 아래의 교육용 출력을 읽고 판정문을 작성합니다. 명령을 실제 장비로 보내지 않습니다. 명령을 별도로 재현하려면 해당 도구와 예제 파일을 갖춘 승인된 격리 환경을 준비해야 합니다. 출력 전체를 저장하고, digest·platform·권한 계약 불일치 조건이 보이면 다음 변경으로 넘어가지 마십시오.

  3. runtime bundle의 출력과 의미를 구분합니다

    값 자체를 외우는 것이 아니라 선택된 platform digest와 runtime resource 계약이 승인값과 일치하는지를 확인해야 합니다. 표시한 값은 교육용 재현 예시이며 실제 장비에서 측정한 결과가 아닙니다. 장비·driver·cluster마다 식별자와 수치는 달라질 수 있습니다.

  4. container의 진행과 중단을 결정합니다

    index→manifest→config/layer→bundle→process를 실제 digest와 runtime 정보로 추적하면 성공입니다. 결과에는 실행 시각, 대상 identity, 사용한 명령, 핵심 출력, 판정과 다음 행동을 함께 남깁니다.

  5. OCI image와 container runtime의 복구를 재검증합니다

    잘못된 platform이나 권한이면 container를 배치에서 제외하고 승인 digest로 되돌립니다. runtime state를 수동 수정하지 말고 declarative workload revision을 교체합니다. 복구 뒤에는 같은 명령과 같은 성공 기준으로 다시 측정합니다. 정상처럼 보인다는 표현만으로 incident를 닫지 않습니다.

개념 해설 01

OCI artifact가 host process로 실행되는 경계를 구분합니다

OCI(Open Container Initiative): image·runtime·distribution 등 container 상호운용 규격을 정의하는 프로젝트입니다.

OCI image는 manifest, optional index, configuration과 filesystem layer descriptor의 content-addressed graph입니다. container는 이 image를 root filesystem과 실행 설정으로 풀어 namespace·cgroup 등 host 격리 안에서 실행한 process입니다.

image와 container를 동일시하면 writable layer의 변경과 재현 가능한 artifact를 혼동합니다. namespace는 관찰 범위를, cgroup은 resource accounting/limit을 제공하지만 container가 별도 kernel을 갖는 것은 아닙니다.

보안 경계는 image format만으로 생기지 않습니다. runtime config의 capability, seccomp, mount, user와 host kernel 취약성을 함께 봅니다.

교육 사례에서 amd64와 arm64가 함께 있는 image index를 단일 amd64 manifest로 잘못 해석했습니다. index digest와 그 안의 platform manifest digest는 서로 다른 내용을 가리킵니다. 실행 node가 어떤 platform을 선택했는지 확인해야 실제 layer까지 추적할 수 있습니다. container 안에서 만든 파일은 image의 불변 layer와 별개이므로 새 instance에서도 남는다고 가정하지 않습니다.

OCI 계층표입니다. image index·platform manifest·runtime bundle·container process 네 계층이 담당하는 것과 담당하지 않는 것을 나란히 두고, 각 계층을 확인하는 명령과 그 출력을 함께 적었습니다.
그림 읽는 법 OCI artifact가 host process로 실행되는 경계를 구분합니다. 표는 배지 1부터 4까지 위에서 아래로 읽고, 한 행에서 둘째 열과 셋째 열이 그 계층의 책임 경계이며 넷째 열은 그것을 확인하는 명령과 출력입니다. 1행 image index는 platform별 manifest descriptor를 모으지만 어떤 platform을 실행할지는 실행 node가 고르고, 출력은 MediaType: application/vnd.oci.image.index.v1+json입니다. 2행 platform manifest는 Platform: linux/amd64의 config digest와 layer digest를 가리키며 index digest와 같은 내용이 아닙니다. 3행 runtime bundle은 capability·seccomp·mount·user와 resource 계약을 정하지만 image format만으로 보안 경계가 생기지는 않습니다. 4행 container process는 namespace와 cgroup 안에서 도는 host process이고 별도 kernel을 갖지 않으며, cat /proc/1/cgroup의 출력은 0::/system.slice/containerd.service입니다. 아래 왼쪽 상자는 index에서 process까지의 추적 경로이고, 오른쪽 상자는 digest·platform·권한 계약이 승인값과 다르면 container를 배치에서 제외하고 승인 digest로 되돌린다는 중단 조건입니다. 색은 열을 구분하려는 것이므로 색을 구별하지 않아도 읽을 수 있고, 표의 digest·출력 문자열은 저자 구성 교육용 예시이며 실제 장비에서 측정한 값이 아닙니다. 자료: OCI Image Format Specification · OCI Runtime Specification를 바탕으로 저자 구성.
왜 이런가
image와 container를 동일시하면 writable layer의 변경과 재현 가능한 artifact를 혼동합니다. namespace는 관찰 범위를, cgroup은 resource accounting/limit을 제공하지만 container가 별도 kernel을 갖는 것은 아닙니다.
언제 문제가 되는가
digest·platform·권한 계약 불일치 조건이면 진행 근거가 부족합니다.
초보자가 자주 하는 오해
container 내부 UID 0은 host kernel 관점에서 자동으로 안전해지지 않습니다. user namespace와 capability 정책을 별도 확인합니다.
직접 확인하는 방법
image reference를 tag와 digest로 각각 해석합니다. manifest의 platform·config·layer digest를 확인합니다.
이 절을 정리하면index→manifest→config/layer→bundle→process를 실제 digest와 runtime 정보로 추적하면 성공입니다.

CHAPTER 1 / 5

image index에서 확인을 시작합니다

원인을 추측해서 설정부터 바꾸지 않습니다. 다음 증거를 같은 시각대의 기록으로 묶으면 어느 경계에서 기대 상태가 깨졌는지 다른 운영자도 재현할 수 있습니다.

1. image reference를 tag와 digest로 각각 해석합니다. 2. manifest의 platform·config·layer digest를 확인합니다. 3. runtime이 선택한 snapshot과 OCI config를 기록합니다. 4. process의 namespace·cgroup·capability와 host kernel 공유를 확인합니다.

CHAPTER 2 / 5

manifest의 실습 대상을 고정합니다

격리 환경 재현용 명령 · 브라우저에서는 실행하지 않습니다
docker buildx imagetools inspect registry.example/model-api@sha256:d7a86bb2b809b36b1f8f0b1172c34c9d40c1d7daa596cd90fb5fd2dd7dd34d83
ctr -n k8s.io containers info model-api-demo
cat /proc/1/cgroup

CHAPTER 3 / 5

runtime bundle의 출력과 의미를 구분합니다

교육용 예상 출력 · 실제 측정값 아님
Name: registry.example/model-api@sha256:d7a86bb2b809b36b1f8f0b1172c34c9d40c1d7daa596cd90fb5fd2dd7dd34d83
MediaType: application/vnd.oci.image.index.v1+json
Platform: linux/amd64
Spec: linux resources memory limit ...
0::/system.slice/containerd.service

CHAPTER 4 / 5

container의 진행과 중단을 결정합니다

CHAPTER 5 / 5

OCI image와 container runtime의 복구를 재검증합니다

CONCRETE CASES

multi-architecture image fixture에서 amd64 manifest digest를 찾고 실행 container의 cgroup limit을 확인합니다.

보안 경계는 image format만으로 생기지 않습니다. runtime config의 capability, seccomp, mount, user와 host kernel 취약성을 함께 봅니다.

잘못된 대응과 확인할 경계

container 내부 UID 0은 host kernel 관점에서 자동으로 안전해지지 않습니다. user namespace와 capability 정책을 별도 확인합니다.

잘못된 platform이나 권한이면 container를 배치에서 제외하고 승인 digest로 되돌립니다. runtime state를 수동 수정하지 말고 declarative workload revision을 교체합니다. 복구 뒤에는 같은 명령과 같은 성공 기준으로 다시 측정합니다. 정상처럼 보인다는 표현만으로 incident를 닫지 않습니다.

INTERACTIVE LAB 1 / 2

실습 1 · 출력에서 판정 근거 찾기

브라우저 안에서 값을 입력하고 실행 결과와 실패·복구 경로를 확인합니다. 실제 장비나 NAS에는 어떤 명령도 보내지 않습니다.

실습 상황:: multi-architecture image fixture에서 amd64 manifest digest를 찾고 실행 container의 cgroup limit을 확인합니다. 수행 지시:: 브라우저에서는 아래의 교육용 출력을 읽고 판정문을 작성합니다. 명령을 실제 장비로 보내지 않습니다. 명령을 별도로 재현하려면 해당 도구와 예제 파일을 갖춘 승인된 격리 환경을 준비해야 합니다. 출력 전체를 저장하고, digest·platform·권한 계약 불일치 조건이 보이면 다음 변경으로 넘어가지 마십시오.

Name: registry.example/model-api@sha256:d7a86bb2b809b36b1f8f0b1172c34c9d40c1d7daa596cd90fb5fd2dd7dd34d83
MediaType: application/vnd.oci.image.index.v1+json
Platform: linux/amd64
Spec: linux resources memory limit ...
0::/system.slice/containerd.service

값 자체를 외우는 것이 아니라 선택된 platform digest와 runtime resource 계약이 승인값과 일치하는지를 확인해야 합니다. 표시한 값은 교육용 재현 예시이며 실제 장비에서 측정한 결과가 아닙니다. 장비·driver·cluster마다 식별자와 수치는 달라질 수 있습니다.

INTERACTIVE LAB 2 / 2

실습 2 · 중단과 복구 계획 세우기

브라우저 안에서 값을 입력하고 실행 결과와 실패·복구 경로를 확인합니다. 실제 장비나 NAS에는 어떤 명령도 보내지 않습니다.

container 내부 UID 0은 host kernel 관점에서 자동으로 안전해지지 않습니다. user namespace와 capability 정책을 별도 확인합니다.

KEY TERMS

이번 단원 핵심 용어

OCI(Open Container Initiative)
image·runtime·distribution 등 container 상호운용 규격을 정의하는 프로젝트입니다.

UNIT WORKBOOK

개념을 새로운 상황에 적용하는 문제와 기록지

기본 원리 확인에서 시작해 실제 업무 판단으로 확장합니다. 답을 제출하면 정답만이 아니라 모든 선택지가 맞거나 틀린 이유를 확인할 수 있습니다.

OCI image와 container runtime의 중단 조건과 복구 증거를 작업 기록으로 작성할 수 있다.

PERSONAL WORKSHEET

내 환경에 옮겨 적는 학습 기록지

입력 내용은 현재 브라우저 화면에만 머물며 저장하거나 외부로 전송하지 않습니다. 민감한 실제 정보 대신 범주와 가명을 사용하십시오.

OFFICIAL SOURCES

공식 자료에서 다시 확인하기

공식 문서와 교육용 출력 판독 검토. 실장비 명령·성능 시험은 미확인입니다.

CORE UNIT 2 / 3

Build와 software 공급망

Dockerfile·cache·SBOM·scan·signature를 같은 digest에 연결합니다.

난이도
중급
구성
강의 5개 · 실습 2개 · 평가

도해·표 자료: 각 강의의 공식 1차 출처를 바탕으로 저자 구성. 원문과 검토일은 해당 강의 끝에서 확인합니다.

PREREQUISITE CHECK

본문을 읽기 전에 확인할 세 가지

정답을 외우는 시험이 아닙니다. 질문을 먼저 생각한 뒤 해설을 열어 이번 과목에서 사용할 바탕 개념을 확인하십시오.

1이 단원에서 실제 장비에 명령을 전송합니까?

아닙니다. 교육용 출력을 브라우저에서 읽고 판단합니다. 별도 재현은 승인된 격리 환경에서만 수행합니다.

2실습 전에 확인할 권한과 환경은 무엇입니까?

rootless 우선·registry project 관리자. TLS registry와 격리 air-gap staging.

3앞 단원 「OCI image와 container runtime」에서 어떤 증거를 남겼습니까?

index→manifest→config/layer→bundle→process를 실제 digest와 runtime 정보로 추적하면 성공입니다.

TEXTBOOK GUIDE

개념의 배경부터 판단 기준까지 읽는 본문

IT를 처음 접하는 독자도 용어를 암기하지 않고 원인과 결과를 연결할 수 있도록 한 절씩 이어서 설명합니다.

  1. Build와 software 공급망의 구성요소와 실패 경계를 구성도로 설명할 수 있다.
  2. Build와 software 공급망의 상태를 명령 출력과 관측값으로 판정할 수 있다.
  3. Build와 software 공급망의 중단 조건과 복구 증거를 작업 기록으로 작성할 수 있다.
Build와 software 공급망 실습 환경과 안전 경계
하드웨어container host·private registry fixture
소프트웨어Ubuntu 24.04·containerd 1.7·Docker/BuildKit·cosign
필요 권한rootless 우선·registry project 관리자
네트워크TLS registry와 격리 air-gap staging

공식 문서와 교육용 출력 판독 검토. 실장비 명령·성능 시험은 미확인입니다.

적용 버전: OCI Image Specification 1.1.x · containerd 1.7.x fixture · 원고 검토일: 2026-09-01

CONCEPT FLOW

각 장은 이렇게 연결됩니다

각 장은 따로 외우는 단답이 아닙니다. 왼쪽에서 오른쪽으로 따라가며 앞 장의 개념이 다음 판단에 어떻게 쓰이는지 먼저 살펴보세요.

  1. 1장source 입력에서 확인을 시작합니다
  2. 2장격리 build의 실습 대상을 고정합니다
  3. 3장artifact 증거의 출력과 의미를 구분합니다
  4. 4장서명 승인의 진행과 중단을 결정합니다
  5. 5장Build와 software 공급망의 복구를 재검증합니다
Build와 software 공급망의 전체 지도입니다. 아래 장문 해설과 각 장을 읽다가 길을 잃으면 이 순서로 돌아오세요.

CONTROLLED EXPLANATION

확인할 증거를 한 단계씩 따라갑니다

현재 설명 · 1/5 · source 입력에서 확인을 시작합니다

다음 연결: 격리 build의 실습 대상을 고정합니다

  1. source 입력에서 확인을 시작합니다

    원인을 추측해서 설정부터 바꾸지 않습니다. 다음 증거를 같은 시각대의 기록으로 묶으면 어느 경계에서 기대 상태가 깨졌는지 다른 운영자도 재현할 수 있습니다.

  2. 격리 build의 실습 대상을 고정합니다

    실습 상황:: mutable base tag와 image 안에 남은 token이 있는 Dockerfile을 고쳐 승인 가능한 evidence 목록을 만듭니다. 수행 지시:: 브라우저에서는 아래의 교육용 출력을 읽고 판정문을 작성합니다. 명령을 실제 장비로 보내지 않습니다. 명령을 별도로 재현하려면 해당 도구와 예제 파일을 갖춘 승인된 격리 환경을 준비해야 합니다. 출력 전체를 저장하고, unpinned base·secret 노출·서명 실패 조건이 보이면 다음 변경으로 넘어가지 마십시오.

  3. artifact 증거의 출력과 의미를 구분합니다

    값 자체를 외우는 것이 아니라 build metadata·SBOM·signature가 같은 immutable digest를 가리키는지를 확인해야 합니다. 표시한 값은 교육용 재현 예시이며 실제 장비에서 측정한 결과가 아닙니다. 장비·driver·cluster마다 식별자와 수치는 달라질 수 있습니다.

  4. 서명 승인의 진행과 중단을 결정합니다

    source revision부터 image digest, SBOM, scan, provenance, signature까지 끊기지 않는 evidence chain을 제출하면 성공입니다. 결과에는 실행 시각, 대상 identity, 사용한 명령, 핵심 출력, 판정과 다음 행동을 함께 남깁니다.

  5. Build와 software 공급망의 복구를 재검증합니다

    digest나 signature가 다르면 release를 중단하고 build cache와 registry event를 보존합니다. 신뢰된 builder에서 pinned input으로 새 digest를 만들고 전체 policy를 다시 실행합니다. 복구 뒤에는 같은 명령과 같은 성공 기준으로 다시 측정합니다. 정상처럼 보인다는 표현만으로 incident를 닫지 않습니다.

개념 해설 01

source revision에서 서명된 image digest까지 추적합니다

SBOM(Software Bill of Materials, software 구성 명세): artifact에 포함된 구성요소를 기술하며 그 자체로 취약점 부재나 신뢰를 보장하지 않습니다.

재현 가능한 build는 source revision, dependency lock, base image digest, builder와 build arguments를 기록해 같은 입력에서 검토 가능한 output을 만드는 과정입니다. SBOM·scan·provenance·signature는 output digest와 연결되어야 합니다.

Dockerfile layer cache는 속도를 높이지만 mutable package index와 secret 유출, 넓은 build context는 재현성과 보안을 해칠 수 있습니다. multi-stage build와 pinned digest, cache/secret mount로 runtime image의 내용을 줄입니다.

scan 결과 0건만 목표로 삼지 않습니다. scanner DB revision, severity policy, exploitability, exception owner와 expiry를 함께 기록합니다.

교육 사례에서 같은 Git commit으로 build했지만 base tag가 바뀌어 output digest가 달라졌습니다. source revision만 같다는 이유로 동일 artifact라고 승인할 수 없습니다. base digest와 dependency lock, builder 정보까지 묶어 변화 원인을 추적합니다. 서명 검증은 누가 어떤 digest에 서명했는지 확인하는 절차이며 취약점 검토와 별도로 수행합니다.

Build 공급망 점검표입니다. source 입력 고정·격리 build·SBOM과 scan·signature 검증 네 단계를 통과 기준과 함께 보이고, build metadata·SBOM·provenance·signature가 모두 같은 image digest를 가리켜야 승인한다는 것을 보입니다.
그림 읽는 법 source revision에서 서명된 image digest까지 추적합니다. 표는 왼쪽 배지 1부터 4까지 위에서 아래로 읽고, 각 행은 무엇을 기록하는가·무엇을 보아야 통과인가·빠뜨리면 무엇이 깨지나 순으로 가로로 읽습니다. 1행은 Git revision과 dependency lock, base image digest를 build metadata에 넣어 base가 tag가 아닌 digest인지 보는 단계이고, 2행은 secret이 BuildKit secret mount로만 들어가고 ARG·ENV에 token이 없는지 보는 단계입니다. 3행은 SBOM과 vulnerability DB revision을 image digest에 연결하고 severity policy와 exception owner·expiry를 남기는 단계이며, 4행은 cosign verify로 누가 어떤 digest에 서명했는지 확인하는 단계입니다. 아래 왼쪽 상자는 build 명령과 그 결과로 얻은 digest, 서명 검증 문구를 한 자리에 모은 것이고, 오른쪽 상자는 build metadata·SBOM·scan 결과·provenance·signature가 모두 그 digest 하나를 가리킬 때만 승인한다는 판단 기준입니다. 맨 아래 띠는 unpinned base·secret 노출·서명 실패 중 하나라도 있으면 release를 중단한다는 규칙이며, 색은 열을 구분하려는 것이므로 색을 구별하지 않아도 읽을 수 있습니다. 표와 상자의 digest·문자열은 저자 구성 교육용 예시이며 실제 장비에서 측정한 값이 아닙니다. 자료: Docker Build documentation · OCI Image Format Specification · Sigstore Cosign Verification를 바탕으로 저자 구성.
왜 이런가
Dockerfile layer cache는 속도를 높이지만 mutable package index와 secret 유출, 넓은 build context는 재현성과 보안을 해칠 수 있습니다. multi-stage build와 pinned digest, cache/secret mount로 runtime image의 내용을 줄입니다.
언제 문제가 되는가
unpinned base·secret 노출·서명 실패 조건이면 진행 근거가 부족합니다.
초보자가 자주 하는 오해
secret을 ARG나 ENV로 전달하면 history 또는 layer에 남을 수 있습니다. BuildKit secret mount와 최소 scope credential을 사용합니다.
직접 확인하는 방법
Git revision·lockfile·base image digest를 build metadata에 넣습니다. network·secret·cache 사용 범위를 build stage별로 확인합니다.
이 절을 정리하면source revision부터 image digest, SBOM, scan, provenance, signature까지 끊기지 않는 evidence chain을 제출하면 성공입니다.

CHAPTER 1 / 5

source 입력에서 확인을 시작합니다

원인을 추측해서 설정부터 바꾸지 않습니다. 다음 증거를 같은 시각대의 기록으로 묶으면 어느 경계에서 기대 상태가 깨졌는지 다른 운영자도 재현할 수 있습니다.

1. Git revision·lockfile·base image digest를 build metadata에 넣습니다. 2. network·secret·cache 사용 범위를 build stage별로 확인합니다. 3. SBOM과 vulnerability DB revision을 image digest에 연결합니다. 4. signature identity·policy·exception 만료를 release evidence에 포함합니다.

CHAPTER 2 / 5

격리 build의 실습 대상을 고정합니다

격리 환경 재현용 명령 · 브라우저에서는 실행하지 않습니다
docker buildx build --provenance=mode=max --sbom=true --metadata-file build-metadata.json --push -t registry.example/model-api:review .
docker buildx imagetools inspect registry.example/model-api:review
cosign verify --key cosign.pub registry.example/model-api@sha256:d7a86bb2b809b36b1f8f0b1172c34c9d40c1d7daa596cd90fb5fd2dd7dd34d83

CHAPTER 3 / 5

artifact 증거의 출력과 의미를 구분합니다

교육용 예상 출력 · 실제 측정값 아님
registry.example/model-api@sha256:d7a86bb2b809b36b1f8f0b1172c34c9d40c1d7daa596cd90fb5fd2dd7dd34d83
Verification for registry.example/model-api@sha256:d7a86bb2b809b36b1f8f0b1172c34c9d40c1d7daa596cd90fb5fd2dd7dd34d83 --
The signatures were verified against the specified identity

CHAPTER 4 / 5

서명 승인의 진행과 중단을 결정합니다

CHAPTER 5 / 5

Build와 software 공급망의 복구를 재검증합니다

CONCRETE CASES

mutable base tag와 image 안에 남은 token이 있는 Dockerfile을 고쳐 승인 가능한 evidence 목록을 만듭니다.

scan 결과 0건만 목표로 삼지 않습니다. scanner DB revision, severity policy, exploitability, exception owner와 expiry를 함께 기록합니다.

잘못된 대응과 확인할 경계

secret을 ARG나 ENV로 전달하면 history 또는 layer에 남을 수 있습니다. BuildKit secret mount와 최소 scope credential을 사용합니다.

digest나 signature가 다르면 release를 중단하고 build cache와 registry event를 보존합니다. 신뢰된 builder에서 pinned input으로 새 digest를 만들고 전체 policy를 다시 실행합니다. 복구 뒤에는 같은 명령과 같은 성공 기준으로 다시 측정합니다. 정상처럼 보인다는 표현만으로 incident를 닫지 않습니다.

INTERACTIVE LAB 1 / 2

실습 1 · 출력에서 판정 근거 찾기

브라우저 안에서 값을 입력하고 실행 결과와 실패·복구 경로를 확인합니다. 실제 장비나 NAS에는 어떤 명령도 보내지 않습니다.

실습 상황:: mutable base tag와 image 안에 남은 token이 있는 Dockerfile을 고쳐 승인 가능한 evidence 목록을 만듭니다. 수행 지시:: 브라우저에서는 아래의 교육용 출력을 읽고 판정문을 작성합니다. 명령을 실제 장비로 보내지 않습니다. 명령을 별도로 재현하려면 해당 도구와 예제 파일을 갖춘 승인된 격리 환경을 준비해야 합니다. 출력 전체를 저장하고, unpinned base·secret 노출·서명 실패 조건이 보이면 다음 변경으로 넘어가지 마십시오.

registry.example/model-api@sha256:d7a86bb2b809b36b1f8f0b1172c34c9d40c1d7daa596cd90fb5fd2dd7dd34d83
Verification for registry.example/model-api@sha256:d7a86bb2b809b36b1f8f0b1172c34c9d40c1d7daa596cd90fb5fd2dd7dd34d83 --
The signatures were verified against the specified identity

값 자체를 외우는 것이 아니라 build metadata·SBOM·signature가 같은 immutable digest를 가리키는지를 확인해야 합니다. 표시한 값은 교육용 재현 예시이며 실제 장비에서 측정한 결과가 아닙니다. 장비·driver·cluster마다 식별자와 수치는 달라질 수 있습니다.

INTERACTIVE LAB 2 / 2

실습 2 · 중단과 복구 계획 세우기

브라우저 안에서 값을 입력하고 실행 결과와 실패·복구 경로를 확인합니다. 실제 장비나 NAS에는 어떤 명령도 보내지 않습니다.

secret을 ARG나 ENV로 전달하면 history 또는 layer에 남을 수 있습니다. BuildKit secret mount와 최소 scope credential을 사용합니다.

KEY TERMS

이번 단원 핵심 용어

SBOM(Software Bill of Materials, software 구성 명세)
artifact에 포함된 구성요소를 기술하며 그 자체로 취약점 부재나 신뢰를 보장하지 않습니다.

UNIT WORKBOOK

개념을 새로운 상황에 적용하는 문제와 기록지

기본 원리 확인에서 시작해 실제 업무 판단으로 확장합니다. 답을 제출하면 정답만이 아니라 모든 선택지가 맞거나 틀린 이유를 확인할 수 있습니다.

Build와 software 공급망의 중단 조건과 복구 증거를 작업 기록으로 작성할 수 있다.

PERSONAL WORKSHEET

내 환경에 옮겨 적는 학습 기록지

입력 내용은 현재 브라우저 화면에만 머물며 저장하거나 외부로 전송하지 않습니다. 민감한 실제 정보 대신 범주와 가명을 사용하십시오.

OFFICIAL SOURCES

공식 자료에서 다시 확인하기

공식 문서와 교육용 출력 판독 검토. 실장비 명령·성능 시험은 미확인입니다.

CORE UNIT 3 / 3

Registry 운영과 폐쇄망 반입

TLS·인증·retention·backup과 air-gap chain of custody를 검증합니다.

난이도
중급
구성
강의 5개 · 실습 2개 · 평가

도해·표 자료: 각 강의의 공식 1차 출처를 바탕으로 저자 구성. 원문과 검토일은 해당 강의 끝에서 확인합니다.

PREREQUISITE CHECK

본문을 읽기 전에 확인할 세 가지

정답을 외우는 시험이 아닙니다. 질문을 먼저 생각한 뒤 해설을 열어 이번 과목에서 사용할 바탕 개념을 확인하십시오.

1이 단원에서 실제 장비에 명령을 전송합니까?

아닙니다. 교육용 출력을 브라우저에서 읽고 판단합니다. 별도 재현은 승인된 격리 환경에서만 수행합니다.

2실습 전에 확인할 권한과 환경은 무엇입니까?

rootless 우선·registry project 관리자. TLS registry와 격리 air-gap staging.

3앞 단원 「Build와 software 공급망」에서 어떤 증거를 남겼습니까?

source revision부터 image digest, SBOM, scan, provenance, signature까지 끊기지 않는 evidence chain을 제출하면 성공입니다.

TEXTBOOK GUIDE

개념의 배경부터 판단 기준까지 읽는 본문

IT를 처음 접하는 독자도 용어를 암기하지 않고 원인과 결과를 연결할 수 있도록 한 절씩 이어서 설명합니다.

  1. Registry 운영과 폐쇄망 반입의 구성요소와 실패 경계를 구성도로 설명할 수 있다.
  2. Registry 운영과 폐쇄망 반입의 상태를 명령 출력과 관측값으로 판정할 수 있다.
  3. Registry 운영과 폐쇄망 반입의 중단 조건과 복구 증거를 작업 기록으로 작성할 수 있다.
Registry 운영과 폐쇄망 반입 실습 환경과 안전 경계
하드웨어container host·private registry fixture
소프트웨어Ubuntu 24.04·containerd 1.7·Docker/BuildKit·cosign
필요 권한rootless 우선·registry project 관리자
네트워크TLS registry와 격리 air-gap staging

공식 문서와 교육용 출력 판독 검토. 실장비 명령·성능 시험은 미확인입니다.

적용 버전: OCI Image Specification 1.1.x · containerd 1.7.x fixture · 원고 검토일: 2026-09-01

CONCEPT FLOW

각 장은 이렇게 연결됩니다

각 장은 따로 외우는 단답이 아닙니다. 왼쪽에서 오른쪽으로 따라가며 앞 장의 개념이 다음 판단에 어떻게 쓰이는지 먼저 살펴보세요.

  1. 1장외부 registry에서 확인을 시작합니다
  2. 2장반입 media의 실습 대상을 고정합니다
  3. 3장내부 registry의 출력과 의미를 구분합니다
  4. 4장운영 정책의 진행과 중단을 결정합니다
  5. 5장Registry 운영과 폐쇄망 반입의 복구를 재검증합니다
Registry 운영과 폐쇄망 반입의 전체 지도입니다. 아래 장문 해설과 각 장을 읽다가 길을 잃으면 이 순서로 돌아오세요.

CONTROLLED EXPLANATION

확인할 증거를 한 단계씩 따라갑니다

현재 설명 · 1/5 · 외부 registry에서 확인을 시작합니다

다음 연결: 반입 media의 실습 대상을 고정합니다

  1. 외부 registry에서 확인을 시작합니다

    원인을 추측해서 설정부터 바꾸지 않습니다. 다음 증거를 같은 시각대의 기록으로 묶으면 어느 경계에서 기대 상태가 깨졌는지 다른 운영자도 재현할 수 있습니다.

  2. 반입 media의 실습 대상을 고정합니다

    실습 상황:: 두 개의 architecture를 가진 image를 폐쇄망으로 옮기는 chain-of-custody worksheet와 No-Go 조건을 작성합니다. 수행 지시:: 브라우저에서는 아래의 교육용 출력을 읽고 판정문을 작성합니다. 명령을 실제 장비로 보내지 않습니다. 명령을 별도로 재현하려면 해당 도구와 예제 파일을 갖춘 승인된 격리 환경을 준비해야 합니다. 출력 전체를 저장하고, media hash·내부 digest·승인표 불일치 조건이 보이면 다음 변경으로 넘어가지 마십시오.

  3. 내부 registry의 출력과 의미를 구분합니다

    값 자체를 외우는 것이 아니라 승인 artifact와 반입 media, 내부 manifest가 같은 content chain을 유지하는지를 확인해야 합니다. 표시한 값은 교육용 재현 예시이며 실제 장비에서 측정한 결과가 아닙니다. 장비·driver·cluster마다 식별자와 수치는 달라질 수 있습니다.

  4. 운영 정책의 진행과 중단을 결정합니다

    외부·media·내부 digest, signature 결과, 담당자와 시각, 내부 pull 시험을 하나의 반입 기록으로 만들면 성공입니다. 결과에는 실행 시각, 대상 identity, 사용한 명령, 핵심 출력, 판정과 다음 행동을 함께 남깁니다.

  5. Registry 운영과 폐쇄망 반입의 복구를 재검증합니다

    hash가 다르면 내부 push와 media 사용을 중단하고 격리합니다. 신뢰된 source에서 새 archive를 만들고 custody를 처음부터 다시 시작합니다. 복구 뒤에는 같은 명령과 같은 성공 기준으로 다시 측정합니다. 정상처럼 보인다는 표현만으로 incident를 닫지 않습니다.

개념 해설 01

폐쇄망 경계마다 artifact identity와 custody를 검증합니다

Chain of custody(인계 추적): artifact가 경계를 지날 때 담당자·시각·무결성·승인을 이어 기록하는 절차입니다.

registry는 tag 목록이 아니라 manifest와 blob의 content-addressed graph, 인증·인가·TLS·retention·garbage collection·backup을 운영하는 서비스입니다. 폐쇄망 반입은 각 물리·논리 경계에서 custody와 hash를 증명해야 합니다.

manifest는 여러 blob을 참조하므로 DB와 filesystem을 임의로 따로 backup하면 일관성이 깨질 수 있습니다. retention과 garbage collection은 배포 중인 digest와 rollback window를 고려해야 합니다.

외부에서 검증한 signature가 내부 copy 뒤에도 같은 digest를 가리키는지 확인합니다. 내부 tag 재작성은 가능하지만 승인 identity는 digest로 유지합니다.

교육 사례에서 archive checksum은 맞지만 내부 registry에는 다른 tag의 manifest가 들어갔습니다. media 무결성과 배포 artifact 동일성은 다른 경계의 증거입니다. 반입 archive 검증 뒤 내부 manifest digest도 외부 승인값과 대조해야 합니다. multi-platform image는 모든 manifest와 blob이 포함되어야 하며 하나의 platform만 시험하고 전체 반입 완료로 쓰지 않습니다.

외부 registry·반입 media·내부 registry 세 경계에서 같은 manifest digest를 대조하고 불일치하면 반입을 중단하는 판정 흐름
그림 읽는 법 왼쪽에서 오른쪽으로 경계 1·2·3을 지나며 같은 digest가 유지되는지 확인합니다. 각 상자의 위쪽은 그 경계에서 하는 일이고 아래쪽은 남기는 증거와 다음 경계로 넘기는 명령입니다. 세 값이 같고 signature 결과·담당자·시각·내부 pull 시험까지 기록되면 초록 상자의 성공 기준을 채운 것입니다. media hash·내부 digest·승인표 중 하나라도 어긋나면 빨간 상자대로 내부 push와 media 사용을 중단하고 custody를 처음부터 다시 시작합니다. 마지막 상자는 archive checksum이 맞아도 내부에 다른 tag의 manifest가 들어갈 수 있다는 사례와 multi-platform image 주의를 정리합니다. 화살표는 시간 비율이 아니라 artifact가 지나는 경계의 순서를 뜻합니다. 도표의 digest·경로·상태 문자열은 저자 구성 교육용 예시입니다. 자료: OCI Distribution Specification · OCI Image Format Specification · Skopeo Documentation를 바탕으로 저자 구성.
왜 이런가
manifest는 여러 blob을 참조하므로 DB와 filesystem을 임의로 따로 backup하면 일관성이 깨질 수 있습니다. retention과 garbage collection은 배포 중인 digest와 rollback window를 고려해야 합니다.
언제 문제가 되는가
media hash·내부 digest·승인표 불일치 조건이면 진행 근거가 부족합니다.
초보자가 자주 하는 오해
archive에 credential file이나 build secret이 섞이지 않았는지 검사합니다. 이동식 media는 조직의 malware scan과 custody 절차를 따릅니다.
직접 확인하는 방법
외부 source registry의 manifest digest와 signature를 저장합니다. export archive와 media의 SHA-256, 담당자, 시각과 봉인 번호를 기록합니다.
이 절을 정리하면외부·media·내부 digest, signature 결과, 담당자와 시각, 내부 pull 시험을 하나의 반입 기록으로 만들면 성공입니다.

CHAPTER 1 / 5

외부 registry에서 확인을 시작합니다

원인을 추측해서 설정부터 바꾸지 않습니다. 다음 증거를 같은 시각대의 기록으로 묶으면 어느 경계에서 기대 상태가 깨졌는지 다른 운영자도 재현할 수 있습니다.

1. 외부 source registry의 manifest digest와 signature를 저장합니다. 2. export archive와 media의 SHA-256, 담당자, 시각과 봉인 번호를 기록합니다. 3. 내부 push 뒤 manifest digest와 platform 목록을 다시 대조합니다. 4. pull 권한·retention·backup restore·rollback digest를 시험합니다.

CHAPTER 2 / 5

반입 media의 실습 대상을 고정합니다

격리 환경 재현용 명령 · 브라우저에서는 실행하지 않습니다
skopeo copy --all docker://registry.external.example/model-api@sha256:d7a86bb2b809b36b1f8f0b1172c34c9d40c1d7daa596cd90fb5fd2dd7dd34d83 oci-archive:model-api.tar
sha256sum model-api.tar > model-api.tar.sha256
sha256sum --check model-api.tar.sha256
skopeo copy --all oci-archive:model-api.tar docker://registry.internal.example/model-api:review
skopeo inspect --raw docker://registry.internal.example/model-api@sha256:d7a86bb2b809b36b1f8f0b1172c34c9d40c1d7daa596cd90fb5fd2dd7dd34d83 | sha256sum

CHAPTER 3 / 5

내부 registry의 출력과 의미를 구분합니다

교육용 예상 출력 · 실제 측정값 아님
model-api.tar: OK
d7a86bb2b809b36b1f8f0b1172c34c9d40c1d7daa596cd90fb5fd2dd7dd34d83  -

CHAPTER 4 / 5

운영 정책의 진행과 중단을 결정합니다

CHAPTER 5 / 5

Registry 운영과 폐쇄망 반입의 복구를 재검증합니다

CONCRETE CASES

두 개의 architecture를 가진 image를 폐쇄망으로 옮기는 chain-of-custody worksheet와 No-Go 조건을 작성합니다.

외부에서 검증한 signature가 내부 copy 뒤에도 같은 digest를 가리키는지 확인합니다. 내부 tag 재작성은 가능하지만 승인 identity는 digest로 유지합니다.

잘못된 대응과 확인할 경계

archive에 credential file이나 build secret이 섞이지 않았는지 검사합니다. 이동식 media는 조직의 malware scan과 custody 절차를 따릅니다.

hash가 다르면 내부 push와 media 사용을 중단하고 격리합니다. 신뢰된 source에서 새 archive를 만들고 custody를 처음부터 다시 시작합니다. 복구 뒤에는 같은 명령과 같은 성공 기준으로 다시 측정합니다. 정상처럼 보인다는 표현만으로 incident를 닫지 않습니다.

INTERACTIVE LAB 1 / 2

실습 1 · 출력에서 판정 근거 찾기

브라우저 안에서 값을 입력하고 실행 결과와 실패·복구 경로를 확인합니다. 실제 장비나 NAS에는 어떤 명령도 보내지 않습니다.

실습 상황:: 두 개의 architecture를 가진 image를 폐쇄망으로 옮기는 chain-of-custody worksheet와 No-Go 조건을 작성합니다. 수행 지시:: 브라우저에서는 아래의 교육용 출력을 읽고 판정문을 작성합니다. 명령을 실제 장비로 보내지 않습니다. 명령을 별도로 재현하려면 해당 도구와 예제 파일을 갖춘 승인된 격리 환경을 준비해야 합니다. 출력 전체를 저장하고, media hash·내부 digest·승인표 불일치 조건이 보이면 다음 변경으로 넘어가지 마십시오.

model-api.tar: OK
d7a86bb2b809b36b1f8f0b1172c34c9d40c1d7daa596cd90fb5fd2dd7dd34d83  -

값 자체를 외우는 것이 아니라 승인 artifact와 반입 media, 내부 manifest가 같은 content chain을 유지하는지를 확인해야 합니다. 표시한 값은 교육용 재현 예시이며 실제 장비에서 측정한 결과가 아닙니다. 장비·driver·cluster마다 식별자와 수치는 달라질 수 있습니다.

INTERACTIVE LAB 2 / 2

실습 2 · 중단과 복구 계획 세우기

브라우저 안에서 값을 입력하고 실행 결과와 실패·복구 경로를 확인합니다. 실제 장비나 NAS에는 어떤 명령도 보내지 않습니다.

archive에 credential file이나 build secret이 섞이지 않았는지 검사합니다. 이동식 media는 조직의 malware scan과 custody 절차를 따릅니다.

KEY TERMS

이번 단원 핵심 용어

Chain of custody(인계 추적)
artifact가 경계를 지날 때 담당자·시각·무결성·승인을 이어 기록하는 절차입니다.

UNIT WORKBOOK

개념을 새로운 상황에 적용하는 문제와 기록지

기본 원리 확인에서 시작해 실제 업무 판단으로 확장합니다. 답을 제출하면 정답만이 아니라 모든 선택지가 맞거나 틀린 이유를 확인할 수 있습니다.

Registry 운영과 폐쇄망 반입의 중단 조건과 복구 증거를 작업 기록으로 작성할 수 있다.

PERSONAL WORKSHEET

내 환경에 옮겨 적는 학습 기록지

입력 내용은 현재 브라우저 화면에만 머물며 저장하거나 외부로 전송하지 않습니다. 민감한 실제 정보 대신 범주와 가명을 사용하십시오.

OFFICIAL SOURCES

공식 자료에서 다시 확인하기

공식 문서와 교육용 출력 판독 검토. 실장비 명령·성능 시험은 미확인입니다.

DECISION ACTIVITY

배포 승인 뒤 `model-api:prod` tag의 digest가 바뀌었습니다. 어떻게 합니까?

먼저 필요한 증거와 중단 기준을 적은 뒤 판단을 선택하십시오.

답 선택

THREE-LEVEL ASSESSMENT

기본 원리에서 운영 판단까지

답을 제출하면 모든 선택지가 맞거나 틀린 이유를 확인할 수 있습니다.

기본 문제 1

OCI image의 content identity는 주로 무엇으로 고정됩니까?

답 선택
적용 문제 2

SBOM과 signature를 무엇에 연결해야 합니까?

답 선택
종합 문제 3

폐쇄망 반입의 올바른 증거 흐름은?

답 선택

LEARNING RECORD

본문·판단 활동·모든 해설을 확인했나요?

완료 기록은 이 브라우저에만 저장됩니다.