dockerd与docker-containerd、docker-runc、docker-containerd-ctr以及docker-containerd-shim的区别

72
这些内容现在真的很混乱。能否有人请解释一下发生了什么事情?只需要一个简短的一行区别。
- dockerd - libcontainerd - containerd - docker-containerd - docker-runc - docker-containerd-ctr - docker-containerd-shim
谢谢。
3个回答

79

dockerd - Docker守护进程本身,是您列表中的最高级组件,也是唯一列出的'Docker'产品,提供Docker所有良好的UX功能。

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

(docker-)containerd-ctr - 一个轻量级CLI,直接与containerd通信。类似于'docker'与'dockerd'的关系。

(docker-)runc - 一个轻量级二进制文件,用于实际运行容器。处理与Linux能力如cgroups、命名空间等的底层接口。

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


你能列出以上内容的来源吗?谢谢。 - Freddie
4
资源是关于这些组件的作用还是它们如何相互作用的?这篇文章(https://hackernoon.com/docker-containerd-standalone-runtimes-heres-what-you-should-know-b834ef155426)可能是一个不错的开始,底部有一个很好的图表。 - johnharris85
@johnharris85 看起来 Hackernoon 删除了你链接的那篇文章。还有其他有用的参考资料吗? - Athir Nuaimi
4
Docker和Containerd:独立运行时的知识点。这篇文章介绍了Docker和Containerd之间的关系,以及它们在容器生态系统中的作用。同时,还探讨了Containerd的优势和劣势,并提供了一些使用建议。如果你对容器技术感兴趣,那么这篇文章一定值得一读。 - johnharris85

19

8

为了更好地理解,以下是一个高层次的概述。(在阅读其他好的答案之前)

架构

筛选出来的图片集合,方便快速理解:

enter image description here

enter image description here

enter image description here

来源:

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

有一句话说得好:"千言万语不如一张图"


这完全没有帮助理解(特别是你称之为“架构”的图片)。首先,该图像并未说明 dockerd 的位置,并且没有指示一个层中的哪个部分使用另一个层中的哪个部分,通信或控制流是什么。最重要的是,它没有解释正当性/用例。没有这个,我们就没有架构图。我们只有一个没有标签的幻灯片 ;) - luis.espinal
1
正如我所提到的,这是一个高层次的概述。显然,并不适用于初学者。在查看此内容之前,请确保您已经了解 Docker 的 <组件> 相关知识。我感觉这对我理解与此问题相关的整体情况有所帮助,因此我将其添加给像我这样的人。请随意编辑此答案,添加任何相关信息 :) - surya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接