| Open Container Initiative | |
| 설립 | Docker, CoreOS 등 업계 연합 |
| 설립일 | 2015년 6월 22일 |
| 소속 | Linux Foundation 협업 프로젝트 |
| 종류 | 개방형 거버넌스 표준화 단체 |
| 주요 산출물 | runtime-spec, image-spec, distribution-spec |
| 링크 | 공식 홈페이지 |
1. 개요
Open Container Initiative(OCI)는 컨테이너 포맷과 런타임에 대한 개방형 산업 표준을 만들기 위해 2015년 6월 22일 설립된 리눅스 재단 산하의 협업 프로젝트다. 특정 회사가 주도하는 방식이 아니라, 여러 기업이 함께 참여하는 중립적인 개방형 거버넌스 구조를 표방한다. Docker의 컨테이너 런타임 참조 구현체인 runc가 바로 이 OCI 산하에서 관리되는 대표적인 결과물이다.2. 설립 배경
2010년대 초중반 Docker가 리눅스 컨테이너 기술의 사실상 표준으로 떠오르는 한편, CoreOS는 자체적으로 appc(App Container)라는 경쟁 컨테이너 이미지·런타임 규격과 rkt라는 런타임을 밀고 있었다. 하나의 회사가 사실상 규격을 독점하는 구도가 굳어지면, 특정 벤더에 종속(vendor lock-in)되거나 생태계가 서로 호환되지 않는 여러 표준으로 파편화될 위험이 있다는 우려가 업계 전반에서 제기되었다.이런 우려를 해소하기 위해, Docker와 CoreOS를 비롯해 AWS, Google, Microsoft, IBM, VMware, Goldman Sachs 등 컨테이너 업계의 주요 기업들이 2015년 6월 22일 DockerCon 행사에서 OCI(처음엔 Open Container Project라는 이름) 설립을 공식 발표했다. Docker는 이 과정에서 자사가 개발해 온 컨테이너 이미지 포맷과 런타임의 초안 규격 및 관련 코드 상당 부분을 OCI에 기증했으며, 이것이 이후 runc의 뼈대가 되었다.
같은 해 12월 8일, OCI는 정식 기술 거버넌스 구조를 발표하면서 창립 멤버 명단을 확정했다. 여기에는 위에 언급한 기업들 외에도 Cisco, Fujitsu, Huawei, Intel, Red Hat, Rancher Labs, Oracle, Hewlett Packard Enterprise 등 수십 개 기업이 이름을 올렸다.
3. 규격 구성
OCI는 크게 세 가지 규격(specification)을 관리한다.- 런타임 규격(runtime-spec): 디스크에 풀어놓은 "파일시스템 번들"을 어떻게 실행할지 정의하는 규격이다. 이 규격의 참조 구현체가 runc다.
- 이미지 규격(image-spec): 컨테이너 이미지의 형식을 정의하는 규격으로, 2017년 7월 19일 1.0.0 버전에 도달했다.
- 배포 규격(distribution-spec): 컨테이너 이미지를 저장소 사이에서 주고받는 방식을 표준화한 API 규격이다. JSON Registry API v2.1 제안을 바탕으로 2018년 3월 8일 별도 프로젝트로 분리되었으며, 2021년 4월 26일 1.0.0 버전에 도달했다.
런타임 규격과 이미지 규격은 2017년 7월, 40여 개 회원사가 참여한 협업 끝에 나란히 1.0 버전으로 출시되었다. 당시 OCI 총괄이사(Executive Director) Chris Aniszczyk는 이 릴리스를 컨테이너 업계 전체에 있어 중요한 이정표라고 평가한 바 있다.
OCI는 출범 초기엔 리눅스 컨테이너에 초점을 맞췄으나, 이후 작업이 확장되며 다른 운영체제 대상으로도 규격 적용 범위가 넓어졌다.
4. 관련 프로젝트와의 관계
OCI 규격을 실제로 구현한 도구들은 OCI 산하 프로젝트인 경우도 있고, 아닌 경우도 있다.- runc: 런타임 규격의 공식 참조 구현체로, OCI 산하 프로젝트다.
- containerd: 이미지 전송·저장, 컨테이너 실행·관리 등을 담당하는 상위 계층 도구로, runc를 내부적으로 사용하지만 OCI가 아니라 CNCF(Cloud Native Computing Foundation)의 직속 프로젝트다.
- CRI-O: Kubernetes 진영에서 나온 컨테이너 런타임으로, 역시 OCI 프로젝트가 아니라 CNCF 산하 Kubernetes 인큐베이터 프로젝트다.
이처럼 OCI 자체는 표준 규격을 정의하고 그 참조 구현체(runc)를 관리하는 역할에 집중하고, 실제 상용 환경에서 널리 쓰이는 도구들은 그 표준 위에 CNCF 등 별도 조직 산하에서 구축되는 구조를 취하고 있다.