栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Docker 架构演进

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 下。

进程层级关系:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987993.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号