Choose a default theme

You can change your theme from the menu

containerd

Earlier revision · 1View current content

containerd는 컨테이너 이미지와 실행 수명주기를 관리하는 런타임이다. 이미지 내용 보관과 내려받기, 파일시스템 스냅샷, 실행 작업 관리 등을 제공하며 다른 시스템에 포함되는 기반 구성 요소로 널리 쓰인다. 사용자는 Docker나 Kubernetes 같은 상위 도구를 통해 간접적으로 사용하는 경우도 많다. 공식 프로젝트 소개는 버전별 구성과 시작 안내를 제공한다.

이미지에서 실행까지

이미지의 레이어는 콘텐츠 저장소에 보관되고 스냅샷터가 컨테이너용 파일시스템을 구성한다. 실제 격리된 프로세스 실행에는 OCI 런타임과 shim이 관여한다. 이 구분 때문에 이미지가 로컬에 존재한다는 사실과 해당 이미지로 실행 중인 프로세스가 있다는 사실은 다르다.

Kubernetes에서는 kubelet이 CRI를 통해 런타임과 통신한다. containerd는 CRI 지원을 제공하지만 네트워크와 cgroup 등 노드 조건도 맞아야 한다. 함께 제공되는 ctr는 주로 진단용이며, 일반 사용자 경험을 위한 nerdctl 및 CRI 진단용 crictl과 목적이 다르다. 시작 가이드가 이 도구들을 구분한다.

장점과 한계

컨테이너 실행 기반을 독립된 구성 요소로 제공하므로 상위 플랫폼이 필요한 기능을 조합하기 좋다. 플러그인 구조로 저장·실행 방식을 확장할 수 있고, Kubernetes와 직접 연결할 수 있다. 다만 애플리케이션 빌드, 배포 승인, 외부 트래픽 경로, 데이터 백업까지 담당하는 완성된 플랫폼은 아니다.

상위 시스템이 관리하는 컨테이너를 낮은 수준의 도구로 직접 바꾸면 상태가 어긋날 수 있다. 저장소와 네임스페이스 개념도 이해해야 한다. containerd의 네임스페이스는 클라이언트별 객체 구분이며, Kubernetes 네임스페이스나 Linux 네트워크 네임스페이스와 이름만 같은 별도 개념이다.

연습 노드의 읽기 전용 점검

아래는 containerd가 이미 설치된 Linux 연습 노드에서 실행 상태를 살펴보는 예시다. 소켓에 접근할 권한이 필요하다. library-worker의 예약 서비스가 Kubernetes를 통해 실행된다는 상황을 상정하지만 어떤 컨테이너도 생성하거나 삭제하지 않는다.

ctr version
ctr namespaces list
ctr -n k8s.io images list
ctr -n k8s.io tasks list

images는 저장된 이미지, tasks는 실행 작업을 보여 준다. 이미지 목록에 있는 항목이 tasks에 없다는 이유만으로 오류는 아니다. k8s.io는 일반적인 Kubernetes CRI 사용 경로이며, 실제 설정과 목록을 먼저 확인한다. 이 명령은 Kubernetes의 Pod 상태·이벤트를 대체하지 않는다.

자주 생기는 오해

Docker 명령이 없다는 이유로 컨테이너가 실행되지 않는다고 생각하거나, 다른 containerd 네임스페이스에서 빈 목록을 보고 이미지가 사라졌다고 결론내리기 쉽다. 런타임 설정 파일의 필드와 기본값은 버전에 따라 달라지므로 다른 세대의 예시를 통째로 덮어쓰지 않고 해당 버전 문서와 비교한다.

참고 자료