Docker vs ContainerD

zuckerfrei·2023년 5월 21일
1

Kubernetes

목록 보기
1/63

역사

  • 맨 처음에는 k8s가 컨테이너 런타임을 도커만 사용함
  • rkt같은 다른 컨테이너 런타임도 추가하고자 함 → 이러려면 필요한게 CRI였음
  • cri = container runtime interface
    • cri 도입으로 oci 표준을 준수하는 다른 컨테이너 런타임을 지원할 수 있게 됨
  • oci = open container initiative
    • 표준을 만들기 위해 구성됨
    • 이미지 스펙 : 이미지 빌드 방식에 대한 기준을 정의
  • 도커는 cri를 지원하려고 만들어진게 아니라서(cri 이전부터 존재함) k8s는 도커를 계속 지원하기 위해 dockershim을 도입했음
    • dockershim : cri 밖에서 docker를 지원하기 위한 임시 방편
  • 그러나 도커는 여러 구성요소로 이루어져 있어서 k8s와 충돌, 불편함이 발생
  • 결국 dockershim 지원을 중단하기로 결정 (v1.23 까지만) → 도커는 더이상 k8s 런타임이 아니게 됨
  • 대신 도커에서 사용하던 containerd라는 cri는 여전히 지원되며, cri-o와 함께 가장 많이 사용되는 런타임 중 하나가 됨


출처

CLI

namectrnerdctlcrictl
purposedebugginggeneral purposedebugging
communityContainerDContainerDk8s
works withContainerDContainerDall cri compatible runtimes
  • containerd
    • ctr
      • containerd와 함께 제공
      • 디버깅 목적으로만 사용, 기능 제한적 → 사용x
    • nerdctl
      • 도커 명령어와 유사
      • 앞으로 더 많이 사용될 가능성 있음
  • 모든 cri
    • crictl
      • 모든 컨테이너 런타임에서 사용 가능
      • 어떤 컨테이너 런타임을 사용할지 설정해야 함, 설정하지 않을 경우 아래의 순서대로 연결을 시도함
        # 설정 방법
        crictl --runtime-endpoint
        
        export CONTAINER_RUNTIME_ENDPOINT
        # 설정하지 않을 경우 연결되는 우선순위 
        unix:///var/run/dockershim.sock
        unix:///run/containerd/containerd.soc
        unix:///run/crio/crio.sock
        unix:///var/run/cri-dockerd.sock
      • 별도 설치 필요
      • 디버깅용도로만 사용됨
      • 도커 명령어와 유사 + 다른점은 pods명령어 사용 가능
      • 앞으로 crictl을 사용할 것을 권장
profile
무설탕 음료를 좋아합니다

0개의 댓글