Docker 架构演进

早期

早期的 Docker 即使 cli 又是 damon,由 libcontainer 直接操作主机 OS 接口,容器启动的应用程序都直接挂在 docker daemon 下。

调用链:cli --> docker --> 容器 CMD
进程层级关系:
在这里插入图片描述

中期

Docker 架构的变化就是引用了 containerd 和 runc,containerd 负责容器的生命周期的管理。原先创建 namespace 和 cgroup 的逻辑形成 runc。调用 runc 以及监视容器的逻辑形成 containerd-shim。

containerd 提供 gRPC 结构由 dockerd 调用,dockerd 主要还是用于接收 cli 发送的请求。有了 containerd 之后,dockerd 可独立升级,避免了早期 dockerd 升级导致所有容器不可用的窘境。

runc 是按照 OCI 标准的具体实现,runc 通过调用内核接口为容器创建 cgroup、namespace 以及挂载 rootfs 等。

containerd-shim 是运行容器的载体,每个启动的容器都会起一个 container-shim 进程,由 containerd 调用。containerd-shim 调用 runc 创建容器并接管容器进程。

调用链:cli --> dockerd --> containerd --> containerd-shim --> runc(运行完退出) --> 容器 CMD
进程层级关系:
在这里插入图片描述

现在

docker-ce19 版本默认使用 containerd-shim,docker-ce20 以后默认使用 containerd-shim-runc-v2,并在进程结构上做了调整。containerd-shim 直接作为 systemd 的子进程,不再挂在 containerd 下。

进程层级关系:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值