컨테이너 기술 표준 정리 — 쿠버네티스·CRI-O·runC의 역할과 차이

컨테이너 런타임(Container Runtime)은 컨테이너를 생성, 실행, 정지 및 제거하는 역할을 담당하는 핵심 소프트웨어 컴포넌트입니다.

주요 토픽

컨테이너 구분

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

Container Runtime 구현체의 역할과 구분
Kubernetes, cri-o, runC? 컨테이너 기술 표준과 구분

컨테이너 관련 구분과 컨테이너 런타임

주요 런타임은 Containerd와 CRI-O가 CRI와 OCI를 모두 준수하며, runc는 기본 런타임으로 사용됩니다. Kata Containers와 gVisor는 보안을 강화한 특화된 런타임입니다.

카테고리 구성 요소 설명 특징
컨테이너 오케스트레이션 Kubernetes
  • 컨테이너 배포, 확장, 관리 자동화를 위한 인기 있는 오픈 소스 플랫폼.
  • 가장 널리 사용되는 컨테이너 오케스트레이션 도구.
  • 고급 기능: 자동 복구, 확장성, 롤링 업데이트.
  • 복잡한 설정과 높은 학습 곡선.
Docker Swarm
  • Docker 컨테이너를 위한 기본 클러스터링 및 오케스트레이션 도구.
  • 소규모 프로젝트 및 간단한 클러스터 설정.
  • 빠른 컨테이너 오케스트레이션 필요 시.
OpenShift
  • Kubernetes 기반의 기업용 컨테이너 플랫폼으로 배포 및 확장 자동화.
  • Kubernetes 기반의 Red Hat 배포판. – 엔터프라이즈 환경에 적합한 추가 도구 및 Red Hat 지원 제공.
  • 통합된 CI/CD 파이프라인.
노드 단독 컨테이너 Docker Engine
  • 컨테이너 생성 및 관리 기능을 지원하는 독립형 컨테이너 런타임.
  • 단일 노드에서 컨테이너 실행 및 테스트. 로컬 개발 환경.
Podman
  • Docker와 유사한 컨테이너 엔진으로 리소스 소모가 적은 특성을 가짐.
  • 단일 노드에서 컨테이너 실행 및 테스트. 로컬 개발 환경.
컨테이너 엔진 (High-Level Runtime) CRI-O
  • Kubernetes와의 통합을 위해 최적화된 경량 컨테이너 엔진.
  • Kubernetes CRI(Container Runtime Interface)를 지원하여 Kubernetes 클러스터 내에서 컨테이너 실행.
  • Kubernetes 전용, CRI를 지원하는 엔진.
  • Kubernetes 환경에서만 사용되는 경우가 많음.
Containerd
  • 컨테이너 실행, 이미지 관리, 저장소 관리, 네트워크, 로그 등의 기능을 제공.
  • Docker와 Kubernetes에서 사용하는 핵심 엔진.
  • 고수준의 컨테이너 실행을 위한 엔진.
  • 다양한 컨테이너 런타임과 함께 동작 가능.
컨테이너 런타임 (Low-Level Runtime) runc
  • 컨테이너를 실행하는 경량의 표준화된 런타임.
  • Docker, containerd 등에서 사용되는 기본 런타임.
  • 컨테이너 생성 및 실행을 위한 낮은 수준의 도구.
  • 컨테이너 엔진과 함께 동작하며, 컨테이너를 실행하는 데 직접적으로 사용됨.
gVisor
  • 보안을 강화한 컨테이너 런타임.
  • 시스템 콜을 사용자 공간에서 처리하여 컨테이너 격리성을 강화.
  • 컨테이너 런타임으로 보안과 격리성에 초점을 둔 런타임.
  • 성능에 영향을 미칠 수 있음.
Kata Containers
  • VM과 컨테이너의 장점을 결합한 런타임.
  • 가상화 기술을 이용하여 컨테이너 격리 수준을 높임.
  • 보안에 중점을 두며, 경량 VM 기반의 컨테이너 실행.
  • 가상화 오버헤드로 성능이 다소 떨어질 수 있음.
rkt (서비스 종료)
  • 앱 중심의 컨테이너 런타임.
  • CoreOS에서 개발, Kubernetes 이전에 사용됨.
  • 서비스 종료된 런타임으로 현재는 더 이상 사용되지 않음.
  • 기존에는 앱 중심의 배포에 중점을 둠.

개념·구조·도입 이유를 한 편에 정리한 대표 가이드입니다.

컨테이너 런타임의 구분

컨테이너 런타임을 계층에 따른 구분

하이 레벨 런타임 (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를 따르는 런타임:
    • runc: OCI 표준 준수를 위한 기본 런타임.
    • Containerd: Docker와 쿠버네티스 ( Kubernetes )에서 사용하는 고수준 런타임.
    • Kata Containers: 경량 VM 기반 보안 런타임.
    • CRI-O: 쿠버네티스 ( Kubernetes )환경에 특화되었으나 OCI 표준 준수.

컨테이너 구분

  • OpenShift와 쿠버네티스 ( Kubernetes )는 컨테이너 오케스트레이션 제품군으로, 다수의 노드를 관리하고 대규모 애플리케이션을 배포하는 데 사용됩니다.
  • Podman/Docker는 노드 단독 컨테이너 제품군에 속하며, 단일 노드에서 컨테이너를 실행하고 관리하는 데 초점이 맞춰져 있습니다.
  • CRI-O와 containerd는 쿠버네티스 ( Kubernetes )런타임 제품군으로, 클러스터 환경에서 쿠버네티스 ( Kubernetes )의 일부로 작동합니다.

Podman이나 Docker처럼 노드 단독 컨테이너 구성을 주로 지원하는 제품들은, 클러스터 환경보다는 개별 호스트에서 컨테이너를 실행하고 관리하는 데 초점이 맞춰져 있습니다.

마무리

컨테이너 기술의 구조, 표준, 제품별 특성을 이해하는 데 기반이 되는 공식 문서와 신뢰할 수 있는 기술 블로그에서 참조했습니다. 이를 통해 각각의 제품과 기술이 어떤 역할을 수행하며 어떤 표준에 속하는지를 명확히 정리했습니다.

클라우드 네이티브 도입·운영에 대해 궁금한 점이 있으시면 편하게 연락 주세요.
전화 (02)469-5426 · 메일 hello@cncf.co.kr

References & Related Links

  1. 컨테이너 표준 및 기술 자료:
  2. 각 런타임의 공식 문서:
  3. 기술 블로그 및 해설:
  4. 컨테이너 오케스트레이션 관련 정보:
이제 나도 MSA 전문가: 개념부터 실무까지 - 기초편

이제 나도 MSA 전문가:

개념부터 실무까지

이제 나도 클라우드 네이티브 전문가: 쿠버네티스 구축부터 운영 완전 정복

쿠버네티스 구축부터

운영 완전 정복

거침없이 배우는 JBoss

거침없이 배우는

JBoss EAP

By Published On: 2025년 1월 8일 Categories: kubernetes컨테이너 기술 표준 정리 — 쿠버네티스·CRI-O·runC의 역할과 차이에 댓글 닫힘Tags: , , , , , , , , , ,

Share This Story, Choose Your Platform!

Go to Top