스펙 둘, 산업 하나
Open Container Initiative (OCI) 는 Linux Foundation 프로젝트로 두 가지 표준화:
- Image Specification — container image 가 어떻게 구성되냐: manifest, config, layer, digest.
- Runtime Specification — runtime 이 bundle 에서 container 를 어떻게 만들고 돌리냐.
Docker 도 Image Spec 만족하는 image 를 빌드. Podman 도. Docker (runc 통해서) 도 Runtime Spec 호환 runtime 사용. Kubernetes (containerd 통해서) 도 마찬가지. 한 번 빌드한 image 는 OCI 지키는 어디서든 굴러.
OCI image 해부
- Manifest — config 와 layer (각각 digest) 를 나열한 JSON 문서.
- Config — runtime 기본값:
CMD,ENV, exposed port, working directory, user. - Layer — gzip 으로 압축된 filesystem diff tarball. OverlayFS 로 stack 해서 실행 filesystem 만듦.
- Digest — SHA-256 해시. layer digest 같은 image 두 개는 디스크에서 layer 공유. 재현성 내장.
운영적으로 왜 중요하냐
노트북에서 Docker 로 빌드해. GitHub Container Registry 로 푸시해. Kubernetes (containerd 사용) 에서 pull-and-run 해. 이 체인 어디에도 Docker 회사 필요 없어. 스펙 이 모두가 동의한 거니까 artifact 가 portable.