본문으로 건너뛰기

Container Runtimes 비교 표

약 3 분containerdockerpodman

Container Runtimes 비교 표

update : 2021. 12. 23.

CRI-OContainerd CRI pluginDocker EnginegVisor CRI pluginCRI-O Kata Containers
sponsorsCNCFCNCFDocker IncGoogleIntel
started20162015Mar 201320152017
version1.231.1920.10release-20211129.01.13
runtimerunc (default)containerd managing runcruncrunsckata-runtime
kernelsharedsharedsharedpartially sharedisolated
syscall filteringnononoyesno
kernel blobsnonononoyes
footprint----30mb
start time<10ms<10ms<10ms<10ms<100ms
io performancehost performancehost performancehost performanceslowhost performance
network performancehost performancehost performancehost performanceslow (see comment)close to host performance
Docshttps://github.com/kubernetes-sigs/cri-o/open in new windowhttps://github.com/containerd/criopen in new windowhttps://github.com/moby/mobyopen in new windowhttps://github.com/google/gvisoropen in new windowhttps://github.com/kata-containers/runtimeopen in new window
장점경량의 쿠버네티스 전용 Docker 데몬이 필요하지 않음 OpenShift의 기본 컨테이너 런타임 아마도 최고의 컨테이너 기본 런타임최신 Docker Engine과 함께 기본적으로 설치됨 Kubernetes는 ContainerD를 직접 사용할 수 있으며, Docker또한 동일한 호스트에서 직접 사용할 수도 있음 DockerD 데몬을 실행할 필요가 없음방대한 수의 사용자가 테스트하고 반복 한 가장 성숙한 런타임 seccomp, SELinux 및 AppArmor를 사용하여 강화할 수 있음 가장 빠른 시작 시간 메모리 사용량이 가장 적음gcloud appengine에서 고객 간의 격리 계층으로 사용함 상태를 저장하지 않는 웹 앱에 적합 표준 컨테이너에 두 개의 보안 계층을 추가함아마도 가장 안전한 옵션 보안에 대한 주요 절충안으로 오버헤드가 발생하는것은 그렇게 나쁘지 않은 것으로 보임
단점Docker Engine이 같고 있는 동일한 보안 이슈를 가지고 있음 보안정책을 별도로 관리해야 함This is slightly newer as it has been through a few iterations of being installed differently.Kubernetes는 CRI 플러그인 아키텍처로 이동하고 있음 보안을 강화하고 관리하는것은 너무 복잡함버전이 지정되지 않았으며 아직 Kubernetes에서 프로덕션에 사용해서는 안됨 많은 syscall을 만드는 응용 프로그램에는 적합하지 않음 400 개 Linux syscall이 모두 구현되어 일부 앱이 작동하지 않을 수 있음 (예 : postgres).kata-runtime 자체는 v1이지만 이것이 Kubernetes 상에서 어떻게 준비 되어 있는지 확인이 필요 30MB 메모리 오버 헤드로 인한 비효율적 패킹 시작 시간