dockerd vs docker-containerd vs docker-runc vs docker-containerd-ctr vs docker-containerd-shim

dockerd vs docker-containerd vs docker-runc vs docker-containerd-ctr vs docker-containerd-shim

这东西现在真的越来越糊涂了。有人可以解释一下发生了什么事吗?只是直线的一个班轮差异。

谢谢

来自文档:

runC is built on libcontainer which is the same container library powering a Docker engine installation. Prior to the version 1.11, Docker engine was used to manage volumes, networks, containers, images etc.. Now, the Docker architecture is broken into four components:

Docker engine 
containerd
containerd-shm
runC. 

二进制文件分别调用:

docker
docker-containerd
docker-containerd-shim
docker-runc.

https://medium.com/faun/docker-containerd-standalone-runtimes-heres-what-you-should-know-b834ef155426

dockerd - Docker 守护程序本身。您列表中的最高级别组件,也是列出的唯一 'Docker' 产品。提供 Docker.

的所有优秀用户体验功能

(docker-)containerd - 也是一个守护进程,监听 Unix 套接字,公开 gRPC 端点。处理所有低级容器管理任务、存储、图像分发、网络附件等...

(docker-)containerd-ctr - 直接与 containerd 通信的轻量级 CLI。可以将其视为 'docker' 与 'dockerd' 的关系。

(docker-)runc - 实际上是 运行 容器的轻量级二进制文件。处理与 Linux 功能(如 cgroup、名称空间等)的低级接口...

(docker-)containerd-shim - 在 runC 实际运行容器后,它退出(允许我们没有任何 long-运行负责我们容器的进程)。 shim 是位于 containerd 和 runc 之间以促进此操作的组件。

高级图片以进一步更好地理解:(在此之前阅读其他好的答案)

Architecture

为快速理解而精选的图片集:

来源:

  1. Containerd
  2. blog.caoyu.info
  3. Twitter

“一图胜千言”这句话是有道理的