首页 > 其他 > 详细

Docker、containerd、docker-shim、runC之间的关系

时间:2021-02-20 18:03:14      阅读:78      评论:0      收藏:0      [点我收藏+]

Docker、containerd、docker-shim、runC之间的关系

  • docker:docker本身而言包括了docker client和dockerd,dockerd实属是对容器相关操作的api的最上层封装,直接面向操作用户;

  • containerd:dockerd实际真实调用的还是containerd的api接口(rpc方式实现),containerd是dockerd和runC之间的一个中间交流组件,理论上,不运行dockerd,也能够直接通过containerd来管理容器。

    向上为Docker daemon提供gRPC接口,使得Docker Daemon屏蔽下面的结构变化,确保原有接口向下兼容。向下通过containerd-shim结合runC,使得引擎可以独立升级。

  • docker-shim:真实运行容器的载体,每启动一个容器都会起一个新的docker-shim的进程。它通过指定三个参数:容器ID、bundle目录(containerd对应某个容器生成目录),运行时二进制(默认是runC),来调用runC的api创建一个容器。

  • runC:运行容器的命令行工具,根据OCI的标准来创建和运行容器。Docker默认提供了docker-runc实现,事实上,通过containerd的封装,可以在Docker Daemon启动的时候指定runc的实现。

技术分享图片

技术分享图片

当Docker daemon启动之后,dockerd和docker-containerd进程一直存在。当启动容器之后,docker-containerd进程会创建docker-containerd-shim进程,其中的参数b9a04a582b66206492d29444b5b7bc6ec9cf1eb83eff580fe43a039ad556e223就是要启动容器的id。最后docker-containerd-shim子进程,已经是实际在容器中运行的进程(既sleep 1000)。

Docker、containerd、docker-shim、runC之间的关系

原文:https://www.cnblogs.com/LMIx/p/14421569.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!