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

问题描述 投票:0回答:4

这个东西现在真的很混乱。有人可以解释一下发生了什么事吗?只是直线的区别。

  • dockerd
  • libcontainerd
  • containerd
  • docker-containerd
  • docker-runc
  • docker-containerd-ctr
  • docker-containerd-shim

谢谢

docker docker-machine docker-swarm boot2docker
4个回答
79
投票

dockerd - Docker 守护进程本身。列表中最高级别的组件,也是列出的唯一“Docker”产品。提供 Docker 所有优秀的 UX 功能。

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

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

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

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


19
投票

来自文档:

runC 构建于 libcontainer 之上,libcontainer 与支持 Docker 引擎安装的容器库相同。在 1.11 版本之前,Docker 引擎用于管理卷、网络、容器、镜像等。现在,Docker 架构分为四个组件:

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


8
投票

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

Architecture

精选图片集以供快速理解:

来源:

  1. 容器
  2. blog.caoyu.info
  3. 推特

“一图胜千言”这句话是有原因的


0
投票

我知道这是一个老问题,但我们的团队尚未将 Kubernetes 升级到 1.24+,因为“Kubernetes 通过 dockershim 对 Docker 的支持现已删除。”在 2023 年仍然会造成相当大的混乱,所以我想添加这三张图片来自 https://www.tutorialworks.com/difference-docker-containerd-runc-crio-oci/

docker 如何与 containerd

一起工作

k8s如何使用CRI

© www.soinside.com 2019 - 2024. All rights reserved.