Docker, Podman / Containerd, CRI-O 뭐가 다른건가?

3

맨날 쓰는데 실은 이 녀석들이 뭐가 다른지 찾아본 적이 없습니다.
Docker가 부분 무료화(?) 정책을 펴면서 Podman이 알려지며 인지하게 됐었는데
이 녀석들이 뭐가 다른지 모른채로 그냥 썼달까…

그래서 데려와서 채찍피티4님께 싸움을 붙여달라고 해봤습니다.

Docker VS Podman

아래는 채찍피티4님에게 의뢰한 결과입니다.

특징DockerPodman
정의컨테이너화 애플리케이션을 생성 및 관리하는 도구도커 CLI와 호환되는 컨테이너 관리 도구
아키텍처클라이언트-서버 모델, 중앙 집중식 데몬데몬 없는 아키텍처, 각 컨테이너가 독립적으로 실행
보안데몬이 root 권한을 필요로 함기본적으로 root 없이 실행, 보안상 이점 제공
사용 용이성광범위한 사용자 기반, 널리 사용되는 명령어와 인터페이스Docker 명령어와 호환, 사용자 전환 용이
커뮤니티 및 지원광범위한 커뮤니티와 상업적 지원Red Hat 및 오픈소스 커뮤니티에 의해 지원
이미지 호환성자체 이미지 형식 및 레지스트리 사용Docker 이미지 형식과 호환
오케스트레이션Docker Swarm 및 Kubernetes와 통합주로 Kubernetes와 통합
확장성 및 성능대규모 환경 및 클러스터 관리에 적합경량화 및 빠른 시작 시간, 개별 컨테이너 관리에 최적화

뭐, 이렇게 늘어놔도 눈에 안들어오니 좀 더 직설적으로 눈에 들어오게 써보자면

DockerPodman
출시 년도2013년 3월2019년 4월
주 메인테이너DockerRed Hat
구성완전체(?)buildah + skopeo + podman
유료 여부부분 무료화(?)무료
지원돈은 항상 옳다알아서 잘 쓰시라고

Docker

양쪽 다 써본 입장에서는 Docker가 안정적이고 편합니다.
아무래도 나온지도 오래 됐고, 돈을 받고 엔터프라이즈 서비스도 하는 만큼
안정성 측면에서는 비교 대상이 아닙니다.
돈은 항상 옳다
쓸 수 있으면 Docker 쓰는게 마음 편함

Podman

닥트리오

Podman을 쓰면 좀 불안정한 대신
회사에서 쓸 때 라이센스 비용에 대한 걱정을 안할 수 있습니다.

Podman은 Docker의 거의 모든것을 호환하기에
alias docker=podman 해놓고 Docker 쓰듯이 써도 위화감 없이 쓸 수 있습니다.
저는 이렇게 하고 쓰고있습니다.

Docker가 모든 기능을 한 몸으로 관리하고 있다보니 무겁다고
buildah + skopeo + podman 으로 구성해놨는데,
의도는 좋지만 저기 써둔게 다 오픈소스다보니
저 중 어느 한 녀석이 문제를 일으키면 동작이 삐걱거리게 됩니다.
꼬우면 니가 수정해서 PR 넣어라

containerd VS CRI-O

이 둘은 뭐 어플리케이션 그런게 아니라 ‘런타임' 레벨입니다.
k8s에서 컨테이너 런타임을 담당하고 있습니다.

아래는 채찍피티4님에게 의뢰한 결과입니다.

특징containerdCRI-O
정의Docker의 핵심 컴포넌트로 분리된, 고성능 컨테이너 런타임쿠버네티스의 경량 컨테이너 런타임
용도다양한 환경에서 컨테이너 실행 및 관리쿠버네티스에 최적화된 컨테이너 관리
호환성Docker 이미지 및 레지스트리와 호환OCI(Open Container Initiative) 표준을 준수
커뮤니티 및 지원Docker 및 CNCF(클라우드 네이티브 컴퓨팅 재단) 지원Red Hat 및 쿠버네티스 커뮤니티 지원
아키텍처모듈식 구조, 다양한 플러그인 지원Kubernetes CRI(컨테이너 런타임 인터페이스)를 구현
성능 및 효율성고성능, 안정적인 컨테이너 관리경량화 및 빠른 시작 시간에 초점
보안강력한 보안 기능쿠버네티스 통합 보안 기능

구글에 CRI-O 검색해보면 ‘Docker 게섯거라' 많이 나오는데
저는 그래서 containerd보다 CRI-O가 먼저 나온줄 알았습니다.

근데 의외로 containerd가 먼저 나왔는데,
containerd의 첫 커밋 날짜는 2015년 11월 13일 이고
CRI-O의 첫 커밋 날짜는 2016년 3월 29일 입니다.

쿠버네티스 구성할 때 둘 중 뭘 써도 잘 모를겁니다.
사실 k8s 구축할 때 실질적으로 애먹이는 녀석은 CNI
이거 쓰나 저거 쓰나 k8s는 잘 돌아갑니다.

뭘 쓰든 상관 없는데 왜 이걸 알아야 하냐면
k8s 1.24 부터는 dockershim을 쓸 수가 없습니다.
(현재 1.29가 최신)

그러니 존재 자체는 알고 있어야 k8s 구축할 때 헤매지 않을 수 있습니다.

아… 어차피 클라우드에서 돈 주고 쓸건데 몰라도 된다구요?
부럽다…

profile
지상 최강의 개발자 쥬니니

1개의 댓글

comment-user-thumbnail
2024년 1월 15일

재밌네요

답글 달기