这个东西现在真的很混乱。有人可以解释一下发生了什么事吗?只是直线的区别。
dockerd
libcontainerd
containerd
docker-containerd
docker-runc
docker-containerd-ctr
docker-containerd-shim
谢谢
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 之间的组件,以促进这一点。
来自文档:
runC 构建于 libcontainer 之上,libcontainer 与支持 Docker 引擎安装的容器库相同。在 1.11 版本之前,Docker 引擎用于管理卷、网络、容器、镜像等。现在,Docker 架构分为四个组件:
Docker engine
containerd
containerd-shm
runC.
二进制文件分别称为:
docker
docker-containerd
docker-containerd-shim
docker-runc.
我知道这是一个老问题,但我们的团队尚未将 Kubernetes 升级到 1.24+,因为“Kubernetes 通过 dockershim 对 Docker 的支持现已删除。”在 2023 年仍然会造成相当大的混乱,所以我想添加这三张图片来自 https://www.tutorialworks.com/difference-docker-containerd-runc-crio-oci/
docker 如何与 containerd
一起工作k8s如何使用CRI