当前位置: 首页 > news >正文

Docker容器完整启动流程(容器底层原理)

一、用户输入docker run命令

组件:docker CLI(客户端/上层工具)

1、解析用户输入的全部参数(镜像名称、-p 端口、挂载卷等)

2、通过REST API把请求发送给本地的dockerd守护进程

二、dockerd(Docker守护进程)接受请求

1、接收 CLI 发来的创建容器请求

2、处理上层资源逻辑:检查本地镜像,如果镜像不存在则执行docker pull拉取镜像;

3、创建网络、数据卷、端口映射规则(iptables DNAT 规则)

4、完成所有上层资源准备工作

5、通过 gRPC 协议调用底层containerd,下发 启动容器 任务

三、containerd容器引擎接收任务

1、containerd 是 Docker 底层容器生命周期管理器
2、收到 dockerd 请求后,不会直接调用 runc;
3、为这一个容器单独启动一个独立进程:containerd-shim-runc-v2

containerd是符合 OCI 标准的容器管理器,负责上层容器全生命周期管理:

--镜像管理(拉取、存储、删除镜像)

--容器生命周期调度(创建、启动、停止、删除容器)

--容器存储、网络管理

四、containerd-shim-runc-v2(垫片shim进程)

1、shim调用 runc 工具,发起容器创建
2、最重要价值:解耦容器进程 和 containerd 守护进程
如果没有 shim:一旦 containerd 进程重启 / 崩溃,所有容器都会被回收杀死
有 shim:containerd 重启,shim 继续运行,容器持续正常运行,不受影响
3、充当容器内进程的父进程
4、持续收集:容器退出状态、OOM 杀死事件、信号、标准输出日志,回传给 containerd
5、转发操作系统信号(docker stop、docker kill)下发给容器内部程序

containerd 启动容器时创建 containerd-shim 进程,shim 脱离 containerd 由 systemd 托管,实现进程生命周期解耦;containerd 重启时,shim 与容器持续运行;containerd 重启完成后,扫描现存 shim 并重新建立通信连接,恢复对容器的管理

五、runc(OCI 标准容器运行时)

1、runc是直接和 Linux 内核交互的工具,真正负责创建容器环境
2.、调用 Linux 内核系统调用:
Namespace:实现 PID、网络、挂载、用户等资源隔离
Cgroup:限制容器最大 CPU、内存、磁盘 IO 资源(你学习的内存限制、OOM 机制就在这里生效)
3、 挂载镜像文件系统(rootfs),组装容器运行环境
4、启动容器内部第一个主进程(容器 1 号进程)

六、Linux内核

Namespace:隔离容器,让容器看不见宿主机、其他容器资源
Cgroups:资源配额限制,触发内存上限时触发 OOM Killer

七、最终状态

runc退出,containerd-shim-runc-v2持续运行,持续托管容器内进程,整个容器正式运行。

问题:

重启 containerd 容器不死,为什么重启 docker 服务容器会停止?

解答:

containerd 依靠 containerd-shim 进程解耦容器生命周期,单独重启 containerd 不会终止容器; 而systemctl restart docker会重启 dockerd,dockerd 默认关闭时主动通知 containerd 停止所有容器;开启 live-restore 参数可以禁止 dockerd 停止容器。容器能否在 docker 重启后自动拉起,由容器--restart重启策略控制

http://www.jsqmd.com/news/1317469/

相关文章:

  • Fedora系统通过dnf安装与管理Node.js新版本完整指南
  • 火车头采集器实战:从零到一掌握数据采集与自动化处理
  • MZmine 3终极指南:从质谱数据小白到分析专家的完全免费解决方案
  • 一次企业微信回调丢失的排查记录
  • Android毕业设计开题报告撰写指南与技术要点
  • C++与OpenCV实战:透视变换实现图像几何校正
  • 射频加热技术原理深度解析:从介电损耗到工业应用
  • 零基础AI原生开发入门:Claude Code教程与实战指南
  • 2026 年武侯靠谱的车辆报废回收生产厂家推荐,你家闲置的老车处理能多拿2千?别被代办坑了,这事儿得这么办-兴原报废车回收 - 行业严选官
  • Windows本地部署Hive:从环境配置到实战验证的完整指南
  • 王者荣耀钟馗高阶攻略:湮灭之锁精准预判与心理博弈实战解析
  • 审计底稿自动化测试怎么做?单元测试、快照测试与回归测试的工程对比
  • 3个关键步骤:用LeetDown让老旧iPhone重获新生
  • ChatGPT桌面版Activity视图:构建AI增强型技术知识库与工作流
  • ChatGPT Plus与Claude组合提升编程效率实战
  • 2026年长沙有实力的丰田商务车改装公司口碑推荐——湖南品驭汽车服务有限公司深度解析 - 装修教育财税推荐2026
  • OpenHarmony多终端开发实战:从工程创建到代码托管
  • JPEXS Flash反编译工具:逆向工程核心技术完全指南
  • AI辅助PPT制作:从内容生成到自动化排版的全流程实践
  • Python 操作 Kafka 实战指南
  • 专科生高效使用AI工具的8个避坑技巧
  • SpringBoot停车场管理系统设计与实现
  • Matlab优化电采暖系统:储能调度与负荷平衡
  • 2026 年更新:万州比较好的本地叉车出租公司选型指南,小区卸货搬大件还在请高价货车?这玩意儿帮你省一半钱,就在家附近-邦辉机械设备租赁 - 行业推荐官【认证】
  • 审计里的金额精度怎么保证?浮点误差、定点小数与尾差分摊的工程对比
  • 知网AIGC检测系统原理与论文降重策略
  • AI模型API集成实战:从零构建Python客户端与生产级部署指南
  • 守护进程化:从原理到Systemd实践,构建可靠后台服务
  • 思科NEXUS交换机密码恢复:Bootloader原理与实战操作指南
  • 2026大同离婚律师实务参考:财产分割、抚养权与债务处理 - 本地品牌推荐