Container engines, one of the most important components of Kubernetes, manage the lifecycle of images and containers. The kubelet interacts with a container runtime through the Container Runtime Interface (CRI).
OS |
Kernel Version |
Container Engine |
Container Storage Rootfs |
Container Runtime |
---|---|---|---|---|
CentOS 7.x |
3.x |
Docker Clusters of v1.23 and later support containerd. |
Clusters of v1.19.16 and earlier use Device Mapper. Clusters of v1.19.16 and later use OverlayFS. |
runC |
EulerOS 2.5 |
3.x |
Docker |
Device Mapper |
runC |
EulerOS 2.9 |
4.x |
Docker Clusters of v1.23 and later support containerd. |
OverlayFS |
runC |
Ubuntu 22.04 |
4.x |
Docker containerd |
OverlayFS |
runC |
Node Type |
OS |
Kernel Version |
Container Engine |
Container Storage Rootfs |
Container Runtime |
---|---|---|---|---|---|
Elastic Cloud Server (VM) |
CentOS 7.x |
3.x |
Docker |
OverlayFS |
runC |
EulerOS 2.5 |
3.x |
Docker |
OverlayFS |
runC |
|
EulerOS 2.9 |
4.x |
Docker Clusters of v1.23 and later support containerd. |
OverlayFS |
runC |
|
Ubuntu 22.04 |
4.x |
Docker containerd |
OverlayFS |
runC |
kubelet --> docker shim (in the kubelet process) --> docker --> containerd
kubelet --> cri-dockerd (kubelet uses CRI to connect to cri-dockerd) --> docker--> containerd
kubelet --> cri plugin (in the containerd process) --> containerd
Although Docker has added functions such as swarm cluster, docker build, and Docker APIs, it also introduces bugs. Compared with containerd, Docker has one more layer of calling. Therefore, containerd is more resource-saving and secure.