Blog
Kubernetes, cri-o, runC? 컨테이너 기술 표준과 구분
Kubernetes, cri-o, runC의 차이와 역할을 알아보세요. 컨테이너 기술 표준과 구성 요소를 이해하여 현대적 클라우드 네이티브 환경을 구축하세요.
2025년 01월 08일

주요 토픽
컨테이너 구분
컨테이너 런타임(Container Runtime)은 컨테이너를 생성, 실행, 정지 및 제거하는 역할을 담당하는 핵심 소프트웨어 컴포넌트입니다. 컨테이너 기술이 발전하면서 런타임도 여러 계층과 기준에 따라 구분됩니다. 아래는 컨테이너 런타임의 기준과 구분에 대한 설명입니다.

컨테이너 관련 구분과 컨테이너 런타임
주요 런타임은 Containerd와 CRI-O가 CRI와 OCI를 모두 준수하며, runc는 기본 런타임으로 사용됩니다. Kata Containers와 gVisor는 보안을 강화한 특화된 런타임입니다.
카테고리 | 구성 요소 | 설명 | 특징 |
---|---|---|---|
컨테이너 오케스트레이션 | Kubernetes |
|
|
Docker Swarm |
|
|
|
OpenShift |
|
|
|
노드 단독 컨테이너 | Docker Engine |
|
|
Podman |
|
|
|
컨테이너 엔진 (High-Level Runtime) | CRI-O |
|
|
Containerd |
|
|
|
컨테이너 런타임 (Low-Level Runtime) | runc |
|
|
gVisor |
|
|
|
Kata Containers |
|
|
|
rkt (서비스 종료) |
|
|
컨테이너 런타임의 구분
컨테이너 런타임을 계층에 따른 구분
하이 레벨 런타임 (High-Level Runtime)
설명: 컨테이너 오케스트레이션 도구(Kubernetes, Docker 등)와 통합되며, 여러 로우 레벨 런타임을 관리.
- 예시제품:
- containerd: Docker와 Kubernetes에서 사용하는 고수준 런타임.
- CRI-O: Kubernetes CRI 표준에 맞춰 설계된 경량 런타임.
- Podman: 단일 호스트 환경에서 컨테이너 실행 및 관리.
로우 레벨 런타임 (Low-Level Runtime)
설명: 컨테이너의 실제 실행을 담당하며, 컨테이너 프로세스의 격리 및 자원 관리 구현.
- 예시 제품:
- runc: 가장 기본적인 경량 런타임, Docker 및 Kubernetes의 기본 런타임으로 사용.
- gVisor: 사용자 공간에서 커널 기능을 제공, 보안에 초점.
- Kata Containers: 경량 가상 머신 기반으로 보안을 강화.
컨테이너 런타임 표준
CRI와 OCI의 역할
- CRI (Container Runtime Interface): High Level Runtime에 속합니다. Kubernetes와 같은 오케스트레이션 도구가 다양한 Low Level Runtime(컨테이너 런타임)과 통신할 수 있도록 하는 API 표준입니다. CRI는 Kubernetes와 컨테이너 런타임 간의 상호작용을 표준화하여, Kubernetes가 다양한 컨테이너 런타임을 사용할 수 있게 합니다.
- OCI (Open Container Initiative): Low Level Runtime에 속합니다. OCI는 컨테이너 이미지 포맷과 컨테이너 런타임 표준을 정의하는 표준입니다. OCI 표준을 따르는 런타임은 서로 호환되며, 다양한 환경에서 실행될 수 있습니다.
CRI (Container Runtime Interface)
- 정의:
- Kubernetes에서 컨테이너 런타임과 통신하기 위한 인터페이스 표준.
- Kubernetes가 다양한 컨테이너 런타임과 상호작용할 수 있도록 설계되었습니다.
- 목적:
- Kubernetes가 컨테이너 생성, 삭제, 상태 확인 등의 작업을 런타임에 요청할 때 일관된 방식으로 수행하도록 보장.
- 구성 요소:
- Container Service: 컨테이너를 생성, 실행, 정지, 삭제.
- Image Service: 컨테이너 이미지를 관리(다운로드, 삭제 등).
- 특징:
- Kubernetes 전용 인터페이스로 설계.
- gRPC 프로토콜 기반.
- 런타임 간 상호운용성 제공.
- CRI를 따르는 런타임:
- CRI-O: Kubernetes 환경에 최적화된 경량 런타임.
- Containerd: Docker와 Kubernetes 모두에서 사용 가능.
- 기타 Kubernetes 통합 런타임.
OCI (Open Container Initiative)
- 정의:
- 컨테이너 기술의 상호운용성을 보장하기 위한 표준.
- 컨테이너 이미지와 런타임의 명세를 정의하여 다양한 도구와 플랫폼 간 호환성을 제공합니다.
- 목적:
- 컨테이너 기술의 벤더 종속성을 줄이고, 표준화된 규격을 통해 생태계 확장.
- 구성 요소:
- OCI Runtime Specification: 컨테이너 생성, 시작, 정지와 같은 런타임 동작 정의. (예:
runc
는 OCI Runtime Spec을 구현.) - OCI Image Specification:
- 컨테이너 이미지의 형식과 구성 정의.
- Docker 이미지와 호환.
- OCI Runtime Specification: 컨테이너 생성, 시작, 정지와 같은 런타임 동작 정의. (예:
- 특징:
- 런타임과 이미지를 분리하여 정의.
- 다양한 컨테이너 런타임 및 오케스트레이션 도구에서 지원.
- OCI를 따르는 런타임:
- runc: OCI 표준 준수를 위한 기본 런타임.
- Containerd: Docker와 Kubernetes에서 사용하는 고수준 런타임.
- Kata Containers: 경량 VM 기반 보안 런타임.
- CRI-O: Kubernetes 환경에 특화되었으나 OCI 표준 준수.
컨테이너 구분
- OpenShift와 Kubernetes는 컨테이너 오케스트레이션 제품군으로, 다수의 노드를 관리하고 대규모 애플리케이션을 배포하는 데 사용됩니다.
- Podman/Docker는 노드 단독 컨테이너 제품군에 속하며, 단일 노드에서 컨테이너를 실행하고 관리하는 데 초점이 맞춰져 있습니다.
- CRI-O와 containerd는 Kubernetes 런타임 제품군으로, 클러스터 환경에서 Kubernetes의 일부로 작동합니다.
Podman이나 Docker처럼 노드 단독 컨테이너 구성을 주로 지원하는 제품들은, 클러스터 환경보다는 개별 호스트에서 컨테이너를 실행하고 관리하는 데 초점이 맞춰져 있습니다.
마무리
컨테이너 기술의 구조, 표준, 제품별 특성을 이해하는 데 기반이 되는 공식 문서와 신뢰할 수 있는 기술 블로그에서 참조했습니다. 이를 통해 각각의 제품과 기술이 어떤 역할을 수행하며 어떤 표준에 속하는지를 명확히 정리했습니다.
References & Related Links
- 컨테이너 표준 및 기술 자료:
- OCI 공식 웹사이트
- Kubernetes 공식 문서 – CRI
- 각 런타임의 공식 문서:
- 기술 블로그 및 해설:
- Red Hat Blog – CRI-O와 Podman 비교
- CNCF 블로그 – Containerd와 Kubernetes
- CoreOS Blog – Rkt 런타임(EOL 관련 정보)
- 컨테이너 오케스트레이션 관련 정보:
- Kubernetes 공식 문서
- OpenShift 공식 웹사이트
- Docker Swarm 문서