Container Runtimes 비교 표

2 minute read

  CRI-O Containerd CRI plugin Docker Engine gVisor CRI plugin CRI-O Kata Containers
sponsors CNCF CNCF Docker Inc Google Intel
started 2016 2015 Mar 2013 2015 2017
version 1.15 1.12 18.06 runc 1.3
runtime runc (default) containerd managing runc runc runsc kata-runtime
kernel shared shared shared partially shared isolated
syscall filtering no no no yes no
kernel blobs no no no no yes
footprint - - - - 30mb
start time <10ms <10ms <10ms <10ms <100ms
io performance host performance host performance host performance slow host performance
network performance host performance host performance host performance slow (see comment) close to host performance
Docs https://github.com/kubernetes-sigs/cri-o/ https://github.com/containerd/cri https://github.com/moby/moby https://github.com/google/gvisor https://github.com/kata-containers/runtime
장점 경량의 쿠버네티스 전용 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 메모리 오버 헤드로 인한 비효율적 패킹 시작 시간

Categories:

Updated:

Comments