Concept
ContainerD

-
Containerd는 Docker 사에서 moby project 와 함께 발표하여 CNCF 에 기증한 오픈소스입니다.
-
ContainerD 2022년 4월 Docker engine이 쿠버네티스에서 사용중단을 발표한 후, 높은 점유율을 이루고 있습니다.
- 간단하게 기존에 사용하던 Docker engine을 사용하지 않고 ContainerD를 사용 하게된 이유를 정리하자면
-
쿠버네티스는 여러 컨테이너 런타임과 통신할 수 있도록 하는 CRI라는 표준 인터페이스를 설계함.
-
Docker engine은 CRI 인터페이스가 생기기전 존재한 기술로 CRI 인터페이스와 맞지 않았음.
-
이를 해결하기 위해 dockershim이라는 어댑터 컴포넌트를 개발하였음.
-
이 쉼의 존재는 kubelet 자체에 많은 불필요한 복잡성을 도입했고, 일부 통합은 이 쉼 때문에 Docker에 대해 일관성 없게 구현되었으며, 이로 인해 유지 관리 부담이 증가하게 됨.
-

- 이처럼 벤더 특정 코드(특정 제품인 Docker에 종속적인 코드)를 유지 관리하는 것은 쿠버네티스의 오픈 소스 철학에 부합하지 않았고, 2022년 4월 v1.24에서 완전한 제거를 발표하였음.

-
그렇다고, ContainerD가 Docker와 완전히 다른 것이 아닌 게, containerD는 도커를 컨테이너 런타임으로 사용할 때 내부적으로 사용되는 컨테이너 런타임 기술로, 이젠 이러한 기술을 도커에서 빼서 containerd만 따로 사용하는 것입니다.
-
즉, 현재는 Docker에서 컨테이너 런타임을 분리하여 ContainerD를 사용하고, 여전히 관련 이미지 개발 등은 Docker을 사용하는 것입니다.
-
Docker Engine, ContainerD에 간단 비교는 아래를 참고해주세요.
Docker Engine vs ContainerD
특성 | Docker Engine | ContainerD | |
---|---|---|---|
설명 | Docker의 전체 컨테이너 관리 플랫폼 | 경량화된 컨테이너 런타임 | |
주요 기능 | 이미지 빌드, 배포, 컨테이너 실행 | 컨테이너 실행, 이미지 관리 | |
API | Docker API 제공 | CRI (Container Runtime Interface) 지원 | |
설치 및 설정 | 복잡한 설치 및 설정 | 비교적 간단한 설치 및 설정 | |
부하 | 상대적으로 높은 리소스 소모 | 더 경량화되어 리소스 효율성 높음 | |
의존성 | 여러 추가 도구 (예: Docker Compose) 필요 | Kubernetes에서 직접 사용 가능 | |
주요 사용 사례 | 개발 및 테스트 환경 | 프로덕션 환경, 특히 Kubernetes에서 사용 |