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에서도 남는다고 가정하지 않습니다.
- 왜 이런가
- 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를 확인합니다.