Certified Kubernetes Administration - 2
2024-06-19
- Kubernetes
- Cloud
Docker와 Containerd의 차이 및 관련 CLI 도구들
초기 컨테이너 시대
-
Docker의 등장:
-
Docker는 컨테이너 작업을 매우 간단하게 만들어서 널리 사용되었음.
-
Kubernetes는 Docker를 오케스트레이션하기 위해 처음에 개발됨.
-
당시 Kubernetes는 Docker에만 의존했고, 다른 컨테이너 런타임을 지원하지 않았음.
-
-
Kubernetes의 발전:
-
Kubernetes가 인기를 얻으면서 다른 컨테이너 런타임(rkt 등)도 지원해야 하는 필요가 생김.
-
이를 위해 Kubernetes는 CRI(Container Runtime Interface)를 도입함.
-
CRI(Container Runtime Interface)
-
OCI 표준:
-
OCI(Open Container Initiative)는 이미지 스펙(imagespec)과 런타임 스펙(runtimespec)을 정의함.
-
이미지 스펙은 이미지가 어떻게 빌드되어야 하는지를 정의.
-
런타임 스펙은 컨테이너 런타임이 어떻게 개발되어야 하는지를 정의.
-
-
CRI 도입:
-
CRI는 Kubernetes가 다양한 컨테이너 런타임과 통신할 수 있도록 함.
-
Docker는 CRI가 도입되기 전에 만들어졌기 때문에 이를 지원하지 않았음.
-
Docker의 구성 요소
-
Docker는 여러 도구들(Docker CLI, Docker API, 이미지 빌드 도구, runC, Containerd 등)로 구성되어 있음.
-
Containerd는 Docker의 데몬으로, CRI 호환 가능하며, 독립적인 런타임으로 사용될 수 있음.
Kubernetes에서 Docker 지원 중단
-
Kubernetes는 dockershim이라는 임시 방편을 통해 Docker를 지원했으나, 이는 유지보수가 어려워짐.
-
Kubernetes 1.24 버전부터 dockershim을 제거하고 Docker 지원을 중단함.
-
Docker가 만든 이미지는 OCI 표준을 따르므로 Containerd에서도 계속 사용 가능.
Containerd의 독립성
-
Containerd는 이제 독립적인 프로젝트로, Docker 없이도 설치 및 사용할 수 있음.
-
Docker의 여러 기능이 필요하지 않다면 Containerd만 설치하는 것이 가능.
CLI 도구들
-
ctr:
-
Containerd와 함께 제공되는 도구로, 디버깅 목적으로 사용됨.
-
기능이 제한적이며, 일반적인 컨테이너 관리에는 적합하지 않음.
-
-
nerdctl:
-
Docker와 유사한 CLI 도구로, Containerd를 위한 일반적인 용도로 사용됨.
-
Docker 명령어와 유사한 방식으로 사용할 수 있음.
-
Docker의 최신 기능을 지원하고, Kubernetes의 네임스페이스와 같은 추가 기능도 제공함.
-
-
crictl:
-
Kubernetes 커뮤니티에서 개발된 도구로, CRI 호환 컨테이너 런타임과 상호작용하기 위해 사용됨.
-
디버깅 목적에 주로 사용되며, Kubernetes의 kubelet과 함께 작동함.
-
Docker와 유사한 명령어로 컨테이너와 상호작용할 수 있음.
-
요약
-
ctr: Containerd 디버깅용 도구, 기능 제한적.
-
nerdctl: Docker 유사 CLI 도구, Containerd와 일반적인 용도로 사용.
-
crictl: Kubernetes 커뮤니티 도구, CRI 호환 런타임과 상호작용, 주로 디버깅 용도.
이와 같은 도구들을 통해 Docker와 Containerd의 차이점을 이해하고, 각각의 도구를 적절히 사용하여 컨테이너 환경을 관리할 수 있습니다.
Certified ...
Certified ...