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

本文解析了Docker、containerd、docker-shim和runC之间的协作关系,揭示了Docker daemon、containerd在容器管理中的角色,以及docker-shim如何通过runC创建和运行容器的实际过程。
摘要由CSDN通过智能技术生成

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的实现。

img

img

当Docker daemon启动之后,dockerd和docker-containerd进程一直存在。当启动容器之后,docker-containerd进程会创建docker-containerd-shim进程。最后docker-containerd-shim子进程,已经是实际在容器中运行的进程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值