GitHub

https://github.com/Choidongjun0830

클라우드

DOCKER VS CONTAINERD

gogi masidda 2024. 11. 22. 16:08

초기에는 Docker가 지배적이라서 Kubernetes는 Docker만 지원했었다.

하지만, 시간이 흘러 다른 Container Runtime을 지원할 필요가 생겼고, 그래서 CRI(Container Runtime Interface)를 만들었다.

CRI는 어떤 공급업체든 Kubernetes의 Container Runtime이 될 수 있게 해준다. 

 

Docker는 CRI보다 이전에 생겼고 여전히 주된 Container Runtime이기 때문에, Kubernetes는 Docker를 지원하기 위해 dockershim을 만들었다. 그래서 CRI 없이도 Docker는 동작했다. 


Docker

 

Docker는 Container Runtime만 있는게 아니라, 여러개의 도구로 이루어져 있다.

  • Docker CLI
    • 커맨드라인 인터페이스
  • Docker API
    • Docker를 프로그램적으로 제어할 수 있는 API
  • Docker Build
    • 컨테이너 이미지 빌드
  • Docker Volumes
    • 데이터 관리를 위한 볼륨
  • Docker AUTH
    • 인증 및 접근 제어
  • Docker Security 
    • 보안 관련 기능
  • containerd
    • CRI 호환이 가능하고 다른 Container Runtime 처럼 Kubernetes와 직접적으로 작업 가능 
    • containerd는 Docker와 별개로 Container Runtime으로 동작 가능 

 

그런데 Kubernetes에서 dockershim이 사라지면서 Docker 자체에 대한 지원이 사라짐. 

 

현재, containerd는 Docker와 런타임과 Docker로 별도로 있다. 

 

containerd

현재는 Docker와 독립된 프로젝트

Docker를 설치할 필요없이 containerd만 설치 가능 

Docker의 다른 기능이 필요없다면 containerd만 설치해도 된다. 

 

CLI

  • ctr
    • containerd의 기본 CLI
  • nerdctl 
    • docker 명령어와 유사하게 동작
  • crictl
    • CRI와 호환되는 컨테이너를 위한 명령어 제공 

 

 

 

 

728x90

'클라우드' 카테고리의 다른 글

Kube-proxy  (0) 2024.11.23
API Server  (0) 2024.11.22
Kubernetes Principles  (0) 2024.10.15
Kubernetes Volumes  (0) 2024.10.12
K8S 네트워킹  (1) 2024.10.11