Docker vs Containerd
kubernetes 1.24부터 kubernetes 내부에서 docker를 더이상 사용하지 않는다.
대신 containerd를 사용하게 되는데, docker와 차이점을 알아보자.


구조

장단점
containerd is a lightweight container runtime, suitable either for limited-resource computing environments or when you’re using a container management system like Kubernetes. Due to its basic interface and lack of ability to build images, it may not be suitable for your development purposes.
중간에 layer가 적기때문에 좀 더 가볍기때문에 제한된 리소스를 써야하는 환경이라면 좀 더 좋을 것이고, 대신 개발 편의성이 떨어진다
Docker offers a full-featured toolkit to build, run, and manage container images and containers in standalone and networked setups. It provides more features than containerd and is more human friendly. Also, Docker uses containerd, which makes it suitable for desktop and continuous integration (CI) build environments. You could use it in production as well if Kubernetes is not available, or if you need isolated network namespaces.
build, run, image관리 등에서 좀 더 편의성이 잘 제공되어있고, CI환경이나 kubernetes환경이 아닌 곳에서 더 편리하게 사용할 수 있다.
Command 차이
docker build, commit, push, run, inspect, ps, image prune...
대부분
crictl로 docker명령어를 대체하는 것이 가능
차이점도 있는데, docker push대신 crictl push는 없고 ctr이라는 containerd 클라이언트 툴을 사용해야 함.
crictl에서는 crictl pods, runp, stopp 와 같은 pod에 좀 더 친화적인 기능을 제공 (도커에선 없는 기능)