About Kubernetes is not compatible with Docker

Address of this blog: https://security.blog.csdn.net/article/details/129153459
Reference: https://www.cnblogs.com/1234roro/p/16892031.html

1. Summary

To sum it up in one sentence:

k8s just abandons dockershim, not the entire Docker (here refers to the container), that is, it no longer supports letting docker call containerd, but directly operates containerd

Specifically, you can trace the function chain and it will be very clear:

1. The role of dockershim is to convert external requests into requests that the docker daemon can understand, and let the docker daemon perform related container operations; 2. The docker daemon
is the daemon process of Docker, which is the part of the docker engine that actually handles transactions , its main functions include image management, image building, REST API, authentication, security, core network, and orchestration; 3. After the
docker daemon is donated to CNCF, containerd is formed, and Kubernetes is also a CNCF project, so their standards are The same (CRI standard);
4. Therefore, for the operation of the container, Kubernetes directly calls containerd. Compared with the previous one, there is no change in essence, but a complicated call chain is removed.

As shown below:

insert image description here

2. History

In 2016, k8s released version 1.0, which can be officially used in the production environment. In the same year, k8s joined the CNCF Foundation;

In 2016, k8s released version 1.5, which introduced a new interface standard CRI. CRI stipulates how k8s calls the container runtime to manage containers and images. Matching components (dockershim);

In 2017, Docker split the docker engine and donated the docker daemon part to the CNCF foundation to form containerd;

In 2018, containerd released version 1.1, which officially supports the CRI standard and integrates with k8s (at this time, k8s is version 1.10). At this time, k8s can directly call containerd;

In 2020, k8s announced that it will deprecate support for Docker (k8s is version 1.20 at this time), and dockershim will be deleted in the future;

In 2022, k8s released version 1.24, officially eliminating dockershim;

So far, the deprecation will not have much impact on Kubernetes and Docker, because both of them have already changed the lower layer to open source containerd, and the original Docker image and container will still run normally. The change is that Kubernetes bypasses Docker and directly calls containerd inside Docker.

The specific relationship refers to the following figure:

insert image description here

Guess you like

Origin blog.csdn.net/wutianxu123/article/details/129153459