首页/新闻资讯/正文详情

【Docker深入浅出】【一】Docker引擎架构介绍

发布时间:2026/11/3 9:14:56 来源:云帆数科 栏目:资讯中心
【Docker深入浅出】【一】Docker引擎架构介绍
文章目录一. docker引擎介绍1. Docker daemon实现Docker API通过API管理容器2. containerd负责容器的生命周期3. runc用于创建和启动容器二. 启动容器的过程1. 启动过程2. docker daemon的维护不会影响到运行中的容器3. shim让容器独立于docker daemon一. docker引擎介绍docker基于OCI的开放标准引擎采用模块化设计。OCI 规范定义了容器镜像的格式使得不同的工具和平台能够创建、分享和运行容器镜像而不受限于特定的实现。兼容 OCI 镜像格式的系统可以使用标准化的镜像文件进行容器部署。OCI 还定义了容器运行时的规范确保容器能够在任何支持 OCI 运行时规范的环境中启动和运行。这使得容器的运行不依赖于特定的实现或平台。Docker引擎的组成Docker引擎由如下主要的组件构成Docker客户端Docker Client​、Docker守护进程Docker daemon​、containerd以及runc。它们共同负责容器的创建和运行。如下图1. Docker daemon实现Docker API通过API管理容器Docker daemonDocker daemon实现了Docker APIDocker API 是 Docker 提供的应用编程接口允许开发者通过编程方式与 Docker 引擎进行交互。Docker daemon中的功能包括但不限于API、镜像管理、身份认证、安全特性、核心网络以及卷。daemon使用一种CRUD风格的API通过gRPC与containerd进行通信。Docker API 的作用包括1. 容器管理 创建和启动容器通过 API可以程序化地创建新的容器并启动它们。例如 通过 POST /containers/create 和 POST /containers/(id or name)/start。 停止和删除容器可以通过 POST /containers/(id or name)/stop 停止容器 通过 DELETE /containers/(id or name)删除容器。2. 镜像管理 拉取和推送镜像可以使用 API 拉取新的镜像POST /images/create或将镜像推送到 Docker 仓库POST /images/(name)/push。 列出和删除镜像通过 GET /images/json 列出本地镜像通过 DELETE /images/(name)删除镜像。3. 网络管理 创建和删除网络可以通过 API 创建新的网络POST /networks/create或删除现有网络DELETE /networks/(id)。 管理网络设置可以查看网络配置和连接状态GET /networks/(id)。4. 卷管理 创建和删除卷通过 API 可以创建新的数据卷POST /volumes/create或删除现有卷DELETE /volumes/(name)。 查看卷信息可以获取卷的详细信息GET /volumes/(name)。5. 日志和监控 获取容器日志可以获取特定容器的日志输出GET /containers/(id or name)/logs帮助调试和监控容器运行状态。 查看容器状态通过 GET /containers/(id or name)/json 获取容器的详细状态信息。6. 系统信息 查看 Docker 版本通过 GET /version 获取 Docker 引擎的版本信息。 获取系统统计信息通过 GET /system/df 获取 Docker 使用的磁盘空间统计信息。7. 安全性和权限 管理访问权限API 可以用于设置和管理 Docker 引擎的访问权限控制不同用户或应用的操作权限。8. 自动化和集成 与 CI/CD 工具集成Docker API 允许在持续集成和持续部署CI/CD流程中自动化容器的构建、测试和部署。 自定义管理工具开发者可以使用 Docker API 创建自定义的管理界面或工具以满足特定的业务需求。使用场景自动化管理通过 API 可以编写脚本或程序自动化容器的创建、启动、停止等操作。集成和扩展将 Docker 功能集成到现有的应用程序或系统中比如在云平台、监控工具或开发环境中。自定义应用构建自定义的用户界面或控制面板提供更符合业务需求的容器管理功能。2. containerd负责容器的生命周期containerd 是 Docker 的一个核心组件主要用于容器的运行时管理。它负责以下几个方面容器生命周期管理启动、停止、删除容器。容器镜像管理拉取、存储和管理容器镜像。资源管理管理容器的资源分配和限制。日志管理处理容器的日志输出。3. runc用于创建和启动容器runc是OCI容器运行时规范的参考实现它使用与OCI兼容的bundle2来启动容器。runc生来只有一个作用——创建容器Docker使用runc作为其默认的容器运行时containerd调用runc并确保Docker镜像以OCI bundle的格式交给runc。runc可以作为独立的CLI工具来创建容器。它基于Libcontainer3也可被其他项目或第三方工具使用。二. 启动容器的过程下面的docker container run命令会基于alpine:latest镜像启动一个新容器。$ docker container run--name ctr1-it alpine:latest sh1. 启动过程当使用Docker命令行工具执行如上命令时Docker客户端会将其转换为合适的API格式并发送到正确的API端点(3?)。一旦daemon接收到创建新容器的命令它就会向containerd发出调用。daemon已经不再包含任何创建容器的代码了。containerd指导runc启动容器containerd不负责创建容器而是指挥runc去做。containerd将Docker镜像转换为OCI bundle并让runc基于此创建一个新的容器。runc与操作系统内核接口进行通信基于所有必要的工具Namespace、CGroup等来创建容器。容器进程作为runc的子进程启动启动完毕后runc将会退出。现在容器启动完毕了。如下图容器启动过程2. docker daemon的维护不会影响到运行中的容器为什么对于docker daemon的维护和升级不会影响到运行中的容器因为Docker将所有的用于启动、管理容器的逻辑和代码从daemon中移除意味着容器运行时与Docker daemon是解耦的有时称之为“无守护进程的容器daemonless container​”​所以对Docker daemon的维护和升级工作不会影响到运行中的容器。在旧模型中所有容器运行时的逻辑都在daemon中实现启动和停止daemon会导致宿主机上所有运行中的容器被杀掉。这在生产环境中是一个大问题——想一想新版Docker的发布频次吧每次daemon的升级都会杀掉宿主机上所有的容器。3. shim让容器独立于docker daemon上图展示了shim组件。shim是将运行中的容器与daemon解耦以便daemon进行升级等操作不可或缺的工具。containerd指挥runc来创建新容器。事实上每次创建容器时它都会fork一个新的runc实例。不过一旦容器创建完毕对应的runc进程就会退出。因此即使运行上百个容器也无须保持上百个运行中的runc实例。一旦runc退出相关联的containerd-shim进程就会成为容器的父进程。作为容器的父进程shim用于管理容器与容器运行时之间的通信。它主要承担以下功能保持所有STDIN和STDOUT流是开启状态从而当daemon重启的时候容器不会因为管道pipe的关闭而终止容器进程管理shim 负责启动和管理容器内的主进程并确保容器进程在后台正确运行。日志转发将容器的标准输出和错误日志转发到 Docker 引擎或日志系统。容器终止处理处理容器的正常或异常退出并将退出状态报告给 daemon。生命周期管理支持容器的启动、停止、重启等操作确保容器生命周期的正常管理。在 Docker 中shim 的作用是让容器进程独立于 Docker 守护进程使得容器可以更稳定地运行同时也提供了更好的隔离和资源管理。

相关推荐

如何用BFS-Best-Face-Swap实现完美换脸:从基础到高级的完整指南
如何用BFS-Best-Face-Swap实现完美换脸:从基础到高级的完整指南

如何用BFS-Best-Face-Swap实现完美换脸:从基础到高级的完整指南 BFS-Best-Face-Swap是一款基于Qwen Image Edit和Flux 2 Klein模型的换脸工具,能够实现高保真的面部和头部交换,自然融合肤色和光线,为用户提供专业级的换脸体验。无… · 2026/11/3 9:14:56

【Docker深入浅出】【四】单体应用容器化与Dockerfile怎么写
【Docker深入浅出】【四】单体应用容器化与Dockerfile怎么写

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:14:56

解决LTX-Best-Face-ID常见问题:从安装错误到人脸模糊的完整解决方案
解决LTX-Best-Face-ID常见问题:从安装错误到人脸模糊的完整解决方案

解决LTX-Best-Face-ID常见问题:从安装错误到人脸模糊的完整解决方案 LTX-Best-Face-ID是一款基于LTX-2.3模型的身份保留参考视频生成LoRA插件,它能通过一张参考照片和文本提示生成保持人物身份的视频。本文将针对使用过程中可能遇到的安装错误、人脸模糊… · 2026/11/3 9:14:56

【44】苹果数据集(有v5/v8模型)/YOLO苹果检测
【44】苹果数据集(有v5/v8模型)/YOLO苹果检测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:50:51

【43】遥感飞机数据集(有v5/v8模型)/YOLO遥感飞机检测
【43】遥感飞机数据集(有v5/v8模型)/YOLO遥感飞机检测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:50:51

英语词性简介
英语词性简介

英语词性主要可以分为两大类:实词 和 虚词。一、实词 - 有实际意义,可在句中独立充当成分名词缩写: n. (或 noun)中文: 名词功能: 表示人、事物、地点、抽象概念的名称。例句: The cat (猫) sat on the mat… · 2026/11/3 9:50:51

RLPR-Qwen2.5:无验证器也能高效推理?
RLPR-Qwen2.5:无验证器也能高效推理?

RLPR-Qwen2.5:无验证器也能高效推理? 导语:OpenBMB推出的RLPR-Qwen2.5-7B-Base模型,通过创新的强化学习框架,在无需外部验证器的情况下显著提升了大语言模型的推理能力,为通用领域推理任务开辟了新路径。 行… · 2026/11/3 9:50:51

Ming-flash-omni:100B稀疏MoE多模态新方案
Ming-flash-omni:100B稀疏MoE多模态新方案

Ming-flash-omni:100B稀疏MoE多模态新方案 导语:Inclusion AI推出1000亿参数稀疏混合专家(MoE)架构多模态模型Ming-flash-omni Preview,以仅60亿活跃参数实现高效计算,在语音识别、图像生成与编辑等领域实现… · 2026/11/3 9:50:51

【学术英语】完型填空练习题
【学术英语】完型填空练习题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:49:49

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码