컨테이너 기술에 대한 표준화 – OCI ( OPEN CONTAINER INITIATIVE )
최근에는 컴퓨터 전체를 가상화하는 가상머신에 비해 오버헤드가 적은 컨테이너 기술이 주목 받고 있습니다. 가상머신과 마찬가지로 컨테이너도 컨테이너 내부에 저장되는 소프트웨어를 담고 있는 파일들을 패키징할 수 있는 포맷이 필요한데, 가상머신의 OVF에 해당하는 표준이 OCI (Open Container Initiative) 입니다.
OCI 는?
Open Container Initiative (OCI)는 컨테이너 런타임 과 이미지 관련 업계 개방형 표준을 만들기 위해 2015년 6월 22일에 레드햇 ( 구 CoreOS 사) 와 Docker 사 등의 여러 기업에 의해 설립 된 현재는 Linux Foundation 산하의 오픈 소스 단체입니다.
당시에는 Docker가 사실상의 컨테이너 표준이었습니다.
레드햇은 도커와는 다른 컨테이너 규격의 표준화를 추진하려하면서 컨테이너의 에코 시스템의 미래에 대한 불안이 높은 시기 였습니다.
그런 상황에서 2016년 6 월에 개최 된 “DockerCon 2015 ‘에서 Docker과 레드햇 등의 기업을 포함한 Open Container Initiative의 출범과 컨테이너 표준화에 대한 노력이 발표 된 것입니다.
2 년 후인 2017 년 7 월에 컨테이너 런타임과 컨테이너 이미지의 첫 번째 표준인 “OCI v1.0 ‘을 발표했습니다.
2021 년 4 월 기준으로 OCI 회원사 리스트는 다음과 같으며, Amazon 사 Microsoft 사 Google 사 Facebook 사 등 대부분의 주요 기술 기업이 참여하고 있습니다.
OCI 표준 요구 사항
OCI에서 제시하는 표준 컨테이너가 만족해야할 5가지 원칙은 다음과 같다.
원칙 | 내용 |
---|---|
표준 동작 (Standard Operations) | • 표준 컨테이너 도구들을 이용해서 컨테이너의 생성, 시작, 정지가 가능해야 함 • 표준 파일 시스템 도구를 통해서 컨테이너의 스냅샷과 복사가 가능해야 함 • 표준 네트워크 도구들을 통해서 컨테이너의 업로드와 다운로드가 가능해야 함 |
내용 중립성 (Content-agnostic) | •표준 컨테이너는 컨테이너가 담고 있는 애플리케이션의 종류에 상관없이 표준 동작들이 동일하게 동작해야 함 |
인프라 중립성 (Infrastructure-agnostic) | •표준 컨테이너는 OCI 지원 인프라라면 종류에 상관없이 컨테이너 실행이 가능해야 함 |
자동화를 위한 설계(Designed for Automation) | •표준 컨테이너는 컨테이너 내용과 인프라 종류에 상관없이 동일한 표준 동작을 지원하기 때문에 자동화가 용이함 |
산업 수준의 배포(Industrygrade delivery) | •표준 컨테이너는 기업 규모에 상관없이 산업 수준의 배포가 가능해야 함 |
출처:클라우드 상호운용성 확보 가이드라인 Vol.2 – 한국정보통신기술협회(TTA)
OCI 구성 요소 및 특징
OCI를 포함한 리눅스 파운데이션의 표준들은 소스코드처럼 github을 통해 관리되고 있으며, OCI의 주요 구성요소는 다음의 표와 같다.
구성 요소 | 내용 | |
---|---|---|
image-spec | 컨테이너 이미지 디스크 포맷 | https://github.com/opencontainers/image-spec |
image-tools | OCI 이미지 명세에 따라 동작하는 도구 모음 | https://github.com/opencontainers/image-tools |
runtime-spec | 컨테이너의 설정 방법, 실행 환경, 라이프사이클을 명시 | https://github.com/opencontainers/runtime-spec |
runtime-tools | OCI 런타임 명세에 따라 동작하는 도구 모음 | https://github.com/opencontainers/runtime-tools |
runc | OCI 표준에 따라 컨테이너를 생성하고 실행할 수 있는 명령형 도구 | https://github.com/opencontainers/runc |
go-digest | 컨테이너 생태계에서 광범위하게 활용될 수 있는 공통 다이제스트(digest) 패키지 | https://github.com/opencontainers/go-digest |
selinux | 컨테이너에 범용적으로 적용될 있는 SELinux 설정 | https://github.com/opencontainers/selinux |
출처 :클라우드 상호운용성 확보 가이드라인 Vol.2 – 한국정보통신기술협회(TTA)
References & Related Links
- 최신 개발기술 트렌드 – 클라우드 네이티브 (Cloud Native Architecture) – https://www.samsungsds.com/global/ko/support/insights/101917_RD_Cloudnative.html
- https://www.opencontainers.org/about
- https://github.com/opencontainers
- https://github.com/opencontainers/runc
- https://www.opencontainers.org/community
컨테이너 장점
가상 머신은 하드웨어 스택을 가상화합니다. 컨테이너는 이와 달리 OS를 가상화하여 여러 개의 컨테이너를 OS 커널에서 직접 실행합니다. 컨테이너는 기존의 가상화 기술보다 훨씬 가볍게 동작하며, OS 커널을 공유하고, 시작 시간이나 종료 시간이 빠르고 , 메모리를 훨씬 적게 차지합니다
컨테이너 기술 소개
IT 분야에서 “컨테이너”도 일종의 박스의 의미이며, 물류분야에서 처럼 Portability (이동성) 을 실현하기 위해 만들어진 기술입니다.
이동성은 IT 시스템 (플랫폼 또는 인프라) 상에서 다른 IT 시스템으로 이동을 쉽게 허용하는 성질을 의미하는 것입니다.
컨테이너 를 들으면 무엇이 떠오르나요?
항구나 공항 등에서 보는 직 물류 업계에서 사용되는 컨테이너가 떠오르 실 것입니다
컨테이너는 내용물을 하나씩 이동하는 것이 아니라 박스에 수하물을 담아 통째로 이동하기 때문에 편리한 물류 수단입니다.
가상화와 컨테이너의 비교
가상화는 개발측면이나 운영측면에서 자원 효율적으로 사용하고 관리하는 기술로서 널리 확산되었습니다. 다양한 OS 환경과 어플리케이션을 하나의 파일로 관리할 수 있는 “가상 머신 (VM)”은 손쉽게 이동할 수 있는 이식성을 제공해 주었습니다.
컨테이너는 하이퍼바이저와 Guest OS 없이 애플리케이션 운영환경을 제공하는 기술로서 앞서의 가상화 기술의 고질적인 문제점들을 해결하고 있습니다.
Docker 그리고 컨테이너 기술의 역사
컨테이너 기술의 시작과 현재까지 발전해온 역사를 살펴봅니다.
1972년 IBM VM / 370 (OS) 최초 가상화 기능 구현 , 1979 년 UNIX V7 에 chroot 시스템 콜 도입, 1999년 Virtuozzo 출시 컨테이너 가상화의 새로운 방향을 제시
디지털 트랜스포메이션 과 클라우드 네이티브 기술
디지털 트랜스포메이션 이란 디지털 기술의 급격한 발전으로 인한 혁신적인 발전 방식을 뜻합니다. 즉, 비즈니스 동향, 전략, 사례, 솔루션, 서비스, 플랫폼의 혁신을 포함합니다.