맨날 쓰는데 실은 이 녀석들이 뭐가 다른지 찾아본 적이 없습니다.
Docker가 부분 무료화(?) 정책을 펴면서 Podman이 알려지며 인지하게 됐었는데
이 녀석들이 뭐가 다른지 모른채로 그냥 썼달까…
그래서 데려와서 채찍피티4님께 싸움을 붙여달라고 해봤습니다.
아래는 채찍피티4님에게 의뢰한 결과입니다.
특징 | Docker | Podman |
---|---|---|
정의 | 컨테이너화 애플리케이션을 생성 및 관리하는 도구 | 도커 CLI와 호환되는 컨테이너 관리 도구 |
아키텍처 | 클라이언트-서버 모델, 중앙 집중식 데몬 | 데몬 없는 아키텍처, 각 컨테이너가 독립적으로 실행 |
보안 | 데몬이 root 권한을 필요로 함 | 기본적으로 root 없이 실행, 보안상 이점 제공 |
사용 용이성 | 광범위한 사용자 기반, 널리 사용되는 명령어와 인터페이스 | Docker 명령어와 호환, 사용자 전환 용이 |
커뮤니티 및 지원 | 광범위한 커뮤니티와 상업적 지원 | Red Hat 및 오픈소스 커뮤니티에 의해 지원 |
이미지 호환성 | 자체 이미지 형식 및 레지스트리 사용 | Docker 이미지 형식과 호환 |
오케스트레이션 | Docker Swarm 및 Kubernetes와 통합 | 주로 Kubernetes와 통합 |
확장성 및 성능 | 대규모 환경 및 클러스터 관리에 적합 | 경량화 및 빠른 시작 시간, 개별 컨테이너 관리에 최적화 |
뭐, 이렇게 늘어놔도 눈에 안들어오니 좀 더 직설적으로 눈에 들어오게 써보자면
Docker | Podman | |
---|---|---|
출시 년도 | 2013년 3월 | 2019년 4월 |
주 메인테이너 | Docker | Red Hat |
구성 | 완전체(?) | buildah + skopeo + podman |
유료 여부 | 부분 무료화(?) | 무료 |
지원 | 돈은 항상 옳다 | 알아서 잘 쓰시라고 |
양쪽 다 써본 입장에서는 Docker가 안정적이고 편합니다.
아무래도 나온지도 오래 됐고, 돈을 받고 엔터프라이즈 서비스도 하는 만큼
안정성 측면에서는 비교 대상이 아닙니다.
돈은 항상 옳다
쓸 수 있으면 Docker 쓰는게 마음 편함
닥트리오
Podman을 쓰면 좀 불안정한 대신
회사에서 쓸 때 라이센스 비용에 대한 걱정을 안할 수 있습니다.
Podman은 Docker의 거의 모든것을 호환하기에
alias docker=podman
해놓고 Docker 쓰듯이 써도 위화감 없이 쓸 수 있습니다.
저는 이렇게 하고 쓰고있습니다.
Docker가 모든 기능을 한 몸으로 관리하고 있다보니 무겁다고
buildah + skopeo + podman 으로 구성해놨는데,
의도는 좋지만 저기 써둔게 다 오픈소스다보니
저 중 어느 한 녀석이 문제를 일으키면 동작이 삐걱거리게 됩니다.
꼬우면 니가 수정해서 PR 넣어라
이 둘은 뭐 어플리케이션 그런게 아니라 ‘런타임' 레벨입니다.
k8s에서 컨테이너 런타임을 담당하고 있습니다.
아래는 채찍피티4님에게 의뢰한 결과입니다.
특징 | containerd | CRI-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 구축할 때 헤매지 않을 수 있습니다.
아… 어차피 클라우드에서 돈 주고 쓸건데 몰라도 된다구요?
부럽다…
재밌네요