Docker vs Containerd

김도비·2025년 9월 28일
0

Kubernates

목록 보기
6/9

현재 쿠버네티스 관련하여 사실상 다시 공부하고 있다. 이해하고 넘어가야 좀 속이 시원할 것 같아서 정리해본다.

1. Docker vs containerd

개념

- Docker

  • 컨테이너 생태계를 대중화시킨 올인원 플랫폼
  • CLI, 빌드 시스템, 이미지 관리, 런타임까지 포함

- containerd

  • CNCF 프로젝트로 독립된 컨테이너 런타임
  • 실행, 이미지 관리, 스냅샷 관리에 집중
  • 쿠버네티스 기본 런타임으로 채택


2. Docker → containerd 전환 배경

1. 초기 구조

  • 쿠버네티스는 Docker만 지원
  • kubelet → dockershim → Docker → containerd → runc

2. 문제점

  • 중간 계층(dockershim) 때문에 복잡성/성능 저하
  • K8s는 컨테이너 실행만 필요했는데 Docker는 불필요한 기능 과다

3. 해결책

  • 2016: CRI(Container Runtime Interface) 도입
  • containerd, CRI-O가 CRI를 직접 지원 → kubelet과 바로 통신 가능

4. Dockershim 제거

  • 2020: K8s 1.20, Dockershim Deprecation 발표
  • 2022: K8s 1.24, Dockershim 완전 제거

5. 정리

- Docker

- 개발자가 쓰기 좋은 풀패키지 도구 (빌드 + 실행 + 이미지 관리 + CLI)
- 로컬 개발 환경, 테스트 환경에서 여전히 많이 사용됨

- containerd

  • 컨테이너 엔진 역할만 담당
  • 쿠버네티스에서 기본 런타임으로 사용됨
  • 불필요한 기능 없이 가볍고 안정적

- CRI

  • 쿠버네티스(kubelet)와 런타임을 연결하는 표준 인터페이스
  • 덕분에 쿠버네티스는 특정 런타임(Docker)에 종속되지 않고, containerd, CRI-O 같은 다양한 런타임을 쉽게 교체 가능

예시)

  • Docker = 자동차 전체 (핸들, 차체, 엔진, 내비게이션 포함)
  • containerd = 엔진
  • CRI = 자동차 운전 표준 (핸들, 페달 조작법)

profile
모든 걸 기록하자

0개의 댓글