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

docker 创建容器过程

结合下图,本文讨论docker 创建容器过程:
在这里插入图片描述

START└── [用户通过Docker Client发出指令]└── (1) docker run 或 docker create 命令├── (2) Docker Client与Docker Daemon建立通信连接└── (3) Docker Daemon接收到创建容器请求├── (4) 检查本地是否存在指定镜像│       ├── (4a) 存在:使用本地镜像│       └── (4b) 不存在:从Docker Registry拉取镜像├── (5) 镜像下载完成后,根据镜像元数据创建新的容器配置├── (6) 分配唯一的容器ID├── (7) 设置容器的网络配置├── (7a) 创建或加入网络(如桥接网络、overlay网络等)├── (7b) 配置端口映射、DNS等网络参数└── (7c) 设置容器间链接(如果适用)├── (8) 设置容器存储卷(如有必要)├── (8a) 绑定挂载宿主机目录├── (8b) 创建或使用数据卷容器└── (8c) 使用临时文件系统或存储驱动进行持久化存储├── (9) 初始化容器环境变量、用户、工作目录等配置└── (10) 准备容器运行时环境├── (10a) 创建容器命名空间、控制组(cgroups)、安全上下文等└── (10b) 启动容器进程(执行指定的ENTRYPOINT和CMD)└── (11) 容器运行时监控├── (11a) 监控容器资源使用情况(CPU、内存、磁盘、网络)├── (11b) 根据cgroups限制调整资源分配└── (11c) 处理容器生命周期事件(如重启、停止、退出)└── (12) 用户访问与交互├── 提供API接口供Docker Client查询容器状态、 logs等信息├── 支持通过`docker exec`命令进入容器执行命令└── 在容器终止时处理退出码及清理工作

注解:

1、 用户通过Docker客户端(如命令行界面CLI)执行docker rundocker create命令,指定要使用的镜像、运行参数等。

2、Docker客户端与Docker守护进程(Docker Daemon,即Docker Engine)建立远程API连接,以便发送请求和接收响应。

3、Docker守护进程接收到创建容器的请求后,开始处理该请求。

4、检查本地镜像仓库中是否已有指定的镜像。如果有,直接使用;如果没有,需从Docker Registry(如Docker Hub)拉取。

  • 如果本地存在所需镜像,则跳过下载步骤。

  • 如果本地不存在所需镜像,Docker会从注册表拉取镜像,并将其存储在本地镜像仓库。

5、根据选定的镜像元数据(如镜像层、环境变量、默认入口点等)生成新的容器配置。

6、为新容器分配一个唯一的容器ID。

7、设置容器的网络配置,包括但不限于:

  • 将容器加入已有的网络(如桥接网络、overlay网络等)或创建新的网络。
  • 配置端口映射,将容器内部端口暴露到宿主机或其他网络。
  • 设置DNS解析规则和其他网络参数,确保容器间通信和对外访问。

8、设置容器的存储卷,用于持久化数据或共享数据:

  • 可以将宿主机上的目录绑定挂载到容器内。
  • 使用数据卷容器(Data Volume Container)共享数据。
  • 通过临时文件系统(如tmpfs)或特定存储驱动(如devicemapper、overlay2等)管理持久化存储。

9、初始化容器的环境变量、用户、工作目录等运行时配置,即创建容器1号进程。

10、准备容器运行时环境:

  • 创建必要的Linux命名空间(如PID、NET、MNT等)、控制组(cgroups)以实现资源隔离与限制,以及安全上下文(如SELinux标签)。
  • 最后,启动容器主进程,执行镜像定义的ENTRYPOINT和CMD。

11、容器运行时监控:

  • 监控容器的CPU、内存、磁盘、网络等资源使用情况。
  • 根据cgroups设置对容器资源进行动态调整。
  • 处理容器的生命周期事件,如自动重启、手动停止、异常退出等。

12、容器状态变更时,Docker守护进程将通知Docker客户端更新状态信息。

以上流程涵盖了从用户发起容器创建请求到容器实际运行起来的全过程,涉及的主要组件包括Docker Client、Docker Engine(Daemon)、镜像、容器运行时、网络配置、存储管理等。您可以根据此描述绘制详细的流程图来直观展现整个过程。

相关文章:

docker 创建容器过程

结合下图,本文讨论docker 创建容器过程: START└── [用户通过Docker Client发出指令]└── (1) docker run 或 docker create 命令├── (2) Docker Client与Docker Daemon建立通信连接└── (3) Docker Daemon接收到创建容器请求├── (4) 检查…...

OSI七层网络攻击行为及防范手段

2020年3月3日,360安全大脑披露美国中央情报局攻击组织(APT-C-39)对我国大型互联网公司、政府部门及相关企业进行长达11年的网络攻击渗透,该组织所使用的网络武器和CIA“Vault7”项目中的网络武器完全吻合。如今随着互联网技术的蓬…...

第100+5步 ChatGPT文献复现:ARIMAX预测肺结核 vol. 5

基于WIN10的64位系统演示 一、写在前面 我们继续往下看,首先例行回顾文章: 《PLoS One》杂志的2023年一篇题目为《A comparative study of three models to analyze the impact of air pollutants on the number of pulmonary tuberculosis cases in …...

论文| Convolutional Neural Network-based Place Recognition - 2014

2014-Convolutional Neural Network-based Place Recognition...

基于微信小程序的自习室预约系统的设计与实现

个人介绍 hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的…...

【机器学习】《机器学习算法竞赛实战》第7章用户画像

文章目录 第7章 用户画像7.1 什么是用户画像7.2 标签系统7.2.1 标签分类方式7.2.2 多渠道获取标签7.2.3 标签体系框架 7.3 用户画像数据特征7.3.1 常见的数据形式7.3.2 文本挖掘算法7.3.3 神奇的嵌入表示7.3.4 相似度计算方法 7.4 用户画像的应用7.4.1 用户分析7.4.2 精准营销7…...

vue3新手笔记

setup(){}函数,是启动页面后,自动执行的一个函数。所有数据(常量、变量)、函数等等,都要return 出去。 ref函数(可用于基本数据类型,也可以用于复杂数据类型):让页面上的…...

互联网大厂ssp面经之路:计算机网络part1

1. 计算机网络的组成部分有哪些? a. 硬件设备:计算机网络由各种硬件设备组成,包括计算机、服务器、路由器、交换机、网卡等。这些设备通过物理连接(如网线、光纤)相互连接。 b. 协议:计算机网络中的通信需…...

C语言程序设计每日一练(1)

探索数字组合的奇妙世界:如何生成所有独特的三位数 当我们想要探索由1、2、3、4这四个数字能组成多少个不同的三位数时,我们实际上是在解决一个排列组合的问题。这不仅是一个数学问题,也是编程领域经常遇到的挑战,特别是在数据处…...

Spring 统一功能处理

前言:为什么要有统一功能处理? 我们在进行数据的返回的时候,不同的方法返回的数据类型也不一样,但是我们前端有时候期望拿到是一样的数据类型。就好比买菜的时候期望最后是用一个大的塑料袋进行包装的。 那么我们可以在HTTP进行响应的之前,做一些事情,让我们返回的数据统…...

【软设】知识点速记2

1.安全性、可靠性与系统性能评测基础知识 1.1计算机和网络安全 1.1.1 安全威胁 网络安全威胁是指任何可能损害网络系统的保密性、完整性和可用性的因素或行为。这些威胁可能来自内部或外部,包括恶意软件、信息泄露、DDoS攻击、社交工程、网络钓鱼、黑客攻击和资源滥用等多种…...

激光雷达和相机的联合标定工具箱[cam_lidar_calibration]介绍

激光雷达和相机的联合标定工具箱[cam_lidar_calibration]介绍 写在前面安装过程调试过程标定成功可视化展示 写在前面 激光雷达和相机联合标定工具 论文地址:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber9564700 github地址: https://github.com…...

ML.NET(二) 使用机器学习预测表情分析

这个例子使用模型进行表情分析: 准备数据: happy,sad 等; using Common; using ConsoleApp2; using Microsoft.ML; using Microsoft.ML.Data; using System.Diagnostics; using static Microsoft.ML.Transforms.ValueToKeyMappingEstimator;…...

YOLOv9最新改进系列:YOLOv9改进之添加注意力-ContextAggregation,有效涨点!!!

YOLOv9最新改进系列:YOLOv9改进之添加注意力-ContextAggregation,有效涨点!!! YOLOv9原文链接戳这里,原文全文翻译请关注B站Ai学术叫叫首er B站全文戳这里! 详细的改进教程以及源码&#xff…...

【数据结构】初识数据结构与复杂度总结

前言 C语言这块算是总结完了,那从本篇开始就是步入一个新的大章——数据结构,这篇我们先来认识一下数据结构有关知识,以及复杂度的相关知识 个人主页:小张同学zkf 若有问题 评论区见 感兴趣就关注一下吧 目录 1.什么是数据结构 2.…...

子域名是什么?有什么作用?

在互联网世界中,域名是我们访问网站的关键。每一个公司的网站都需要拥有自己的域名,其中有些大型公司的网站还不止一个域名,除了主域名外还拥有子域名。有些人感到非常困惑,不知道子域名是什么。其实子域名也就是平时所说的二级域…...

学习 Rust 的第一天:基础知识

如果你对 Rust 一无所知,那我来解释一下。 “Rust 是一种系统编程语言,其优先考虑性能、内存安全和零成本抽象。” 你好,世界 我之前研究过 Rust,并且对 Java、C、C 和 Python 的基本编程概念有相当了解。 今天,我…...

电商技术揭秘七:搜索引擎中的SEO关键词策略与内容优化技术

文章目录 引言一、关键词策略1.1 关键词研究与选择1. 确定目标受众2. 使用关键词研究工具3. 分析搜索量和竞争程度4. 考虑长尾关键词5. 关键词的商业意图6. 创建关键词列表7. 持续监控和调整 1.2 关键词布局与密度1. 关键词自然分布2. 标题标签的使用3. 首次段落的重要性4. 关键…...

系统开发实训小组作业week7 —— 优化系统开发计划

目录 1. 建立规则,仪式,流程,模式 2. 给好行为正面的反馈 3. 明确指出不合适的行为,必要时调整人员 在 “系统开发实训课程” 中,我们小组的项目是 “电影院会员管理系统” 。在项目的开发过程中,我们遇…...

golang的引用和非引用总结

目录 概述 一、基本概念 指针类型(Pointer type) 非引用类型(值类型) 引用类型(Reference Types) 解引用(dereference) 二、引用类型和非引用类型的区别 三、golang数据类型…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...