본문 바로가기

Technical Docs/container

[Container] 쿠버네티스는 왜 도커 사용을 중단하는가?

공식 문서를 보면서 지원을 중단하는 이유를 알아보고자 작성함.

요약

1. 쿠버네티스가 1.20 이후로 도커를 지원하지 않겠다고 발표함.

2. 도커는 CRI(Container Runtime Interface)를 지키지 않았다고 함.

3. 쿠버네티스가 1.23 부터 Dockershim 최초 릴리스하겠다고 함. (cri-o 사용 예정)

4. 쿠버네티스가 1.24 부터 Dockershim 제거하겠다고 함.

 

도커는 CRI(Container Runtime Interface)를 지키지 않았다고 하는 이유는?

2018년 도커와 컨테이너 구동 방식을 도식화한 자료임.

 

kubelet -> CRI -> dockershim -> dockerd -> containerd -> Container

kubelet -> CRI -> containerd -> Container

 

도커가 CRI를 지켰을 경우 Dockershim과 Dockerd가 필요하지 않음

하지만, Dockershim과 Dockerd가 있어야만 도커를 사용할 수 있음

 

쿠버네티스는 왜 도커 사용을 중단하는가?

1. CRI를 지키지 않음

CRI를 지켰을 경우 dockershim이 필요 없어지게 되며, 성능 차이가 발생 됨

포드 시작 지연, CPU, Meory 사용량 성능이 최적화 됨을 확인할 수 있음

[개인생각] 2.  root로 구동 도커데몬

도커는 다른 컨테이너 런타임(containerd, cri-o 등) 서비스와 다르게 root로 데몬이 구동 됨.

[ec2-user@ip-172-31-13-5 ~]$
[ec2-user@ip-172-31-13-5 ~]$ ps -ef | grep -v grep | grep docker
root      3538     1  0 07:04 ?        00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit nofile=32768:65536
[ec2-user@ip-172-31-13-5 ~]$
[ec2-user@ip-172-31-13-5 ~]$

[개인생각] 3. docker swarm 존재

docker swarm(도커)과 쿠버네티스(구글)는 컨테이너 오케스트레이션 툴

도커는 자체 컨테이너 오케스트레이션 툴이 있기 때문에, 쿠버네티스 요구 사항을 안들어 주지 않았을까 함

쿠버네티스는 초기 인지도를 위해 도커를 사용하지 않았을까 함

 

참고

https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker

https://kubernetes.io/blog/2018/05/24/kubernetes-containerd-integration-goes-ga/ https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/