containerd
containerd는 Docker에서 분리되어 CNCF(Cloud Native Computing Foundation)에 기증된 고성능의 컨테이너 런타임(Runtime) 으로, 컨테이너의 생성, 실행, 이미지 관리, 저장소 연동 등 핵심 기능을 수행하는 백그라운드 서비스이다.
원래 Docker 내부의 핵심 구성요소였으나, 경량화된 구조로 Kubernetes 등 다양한 환경에서 독립 실행이 가능하도록 설계되었으며, 현재는 Kubernetes의 기본 컨테이너 런타임 중 하나로 널리 사용되고 있다.
주요 특징
- 컨테이너 생애주기 관리: 컨테이너 생성, 실행, 중지, 삭제 등의 모든 과정을 담당하였다.
- 이미지 관리 기능 내장: 컨테이너 이미지의 Pull, Push, Unpack 등을 자체 처리한다.
- 플러그인 기반 아키텍처: 스냅샷터(snapshotter), 이미지 서비스, 이벤트 등 기능별 플러그인으로 구성되어 확장성이 뛰어나다.
- CRI 호환성 보장: Kubernetes와의 통합을 위한 CRI(Container Runtime Interface)를 지원한다.
- 보안 및 경량화 중심: 데몬리스 설계와 런타임 분리 구조를 통해 높은 보안성과 성능을 확보하였다.
장점
- Kubernetes 친화성: CRI를 통해 Kubelet과 직접 통신 가능하며, Docker 없이도 Kubernetes 클러스터 구성 가능하다.
- 경량성 및 안정성: 최소한의 구성으로 안정적인 운영환경 제공.
- 광범위한 플랫폼 지원: 리눅스, 윈도우 등 다양한 운영체제에서 실행 가능하다.
- 생태계 통합 용이: nerdctl, k3s, AWS Fargate 등 다양한 도구 및 서비스에서 사용된다.
- CNCF 인증 및 지속 개발: CNCF 인큐베이티드 프로젝트로 안정성과 커뮤니티 지원을 확보하였다.
관련 용어
- Docker: 초기 containerd의 상위 계층 도구였으며, 지금은 containerd 위에서 동작하는 클라이언트 역할을 한다.
- runc: containerd 내부에서 실제 컨테이너를 생성·실행하는 저수준 런타임이다.
- CRI (Container Runtime Interface): Kubernetes가 외부 컨테이너 런타임과 통신하기 위한 표준 인터페이스이다.
- Snapshotter: 컨테이너 파일시스템을 관리하는 플러그인이다. overlayfs, btrfs 등을 사용할 수 있다.
- nerdctl: containerd 전용 CLI 도구로, Docker와 유사한 명령어를 제공한다.
주요 솔루션 및 사용 사례
- 주요 솔루션
- Kubernetes + containerd: 현재 가장 많이 사용되는 조합으로, Docker 대신 containerd를 기본 런타임으로 채택함.
- Rancher k3s: 경량 쿠버네티스 배포판으로 containerd를 기본 타임으로 사용.
- Amazon EKS + Fargate: AWS의 서버리스 컨테이너 서비스에서도 containerd를 기반으로 구동.
- OpenShift (CRI-O와 병행): 일부 OpenShift 환경에서는 containerd와 CRI-O 중 선택적으로 구성할 수 있음.
- 사용 사례
- 쿠버네티스 클러스터 런타임 구성: Docker 대신 containerd 기반의 클러스터를 구성하여 리소스 효율을 개선.
- 보안 강화된 컨테이너 배포: runc와의 연계를 통해 SECCOMP, AppArmor, SELinux와 같은 보안 설정 적용.
- 고속 CI/CD 환경 구성: containerd의 빠른 이미지 풀링 속도와 낮은 오버헤드를 활용하여 배포 자동화 수행.
- 경량화 서버에서 컨테이너 실행: IoT 및 엣지 컴퓨팅 환경에서 containerd를 통한 최소화된 컨테이너 관리.




