Docker 体系化完整知识框架(从构建到运行到编排)

Docker 体系化完整知识框架(从构建到运行到编排)

Dockerfile 定义分层构建规则 + 构建缓存优化打包速度 → 生成多层只读镜像(镜像层) → pull 分层落地磁盘、共享复用 → docker run 时通过联合文件系统动态堆叠图层 + 新增读写层形成容器 → docker compose 统一编排多容器协同运行

所有 Docker 行为,全部逃不出这条链路。


一、构建阶段:Dockerfile(镜像的源头)

1.1 核心本质

Dockerfile 每一条 改变文件 的指令(FROM / COPY / RUN / ADD)都会生成一层只读镜像层。

无文件变更指令(WORKDIR / ENV / CMD / EXPOSE)不产生图层,只修改镜像元数据。

1.2 构建缓存机制(核心优化)

Docker 构建是从上到下逐条校验缓存:

  • 如果当前指令 & 对应文件哈希没变 → 复用缓存层
  • 一旦某一层变更 → 当前层 + 后续所有上层全部失效重构建

✅ 企业标准顺序(为了缓存最大化):

复制依赖文件 => 安装依赖 => 复制业务代码

1.3 多阶段构建(生产必备)

多阶段 = 多个 FROM = 多个独立镜像文件系统

  • 阶段1(builder):带完整环境、源码、打包工具,用于编译构建(npm run build)
  • 阶段2(最终镜像):只复制编译产物,丢弃源码、工具、依赖、缓存

收益三要素:镜像极小、无源码泄露、攻击面极低


二、产物阶段:镜像(Image)= 多层只读文件模板

2.1 镜像本质

镜像 = 一堆有序、只读、分层文件的集合

镜像本身静态、不运行、无进程,只是磁盘上的文件模板。

2.2 镜像分层存储机制(你最容易混淆的点)

  • 构建时:生成一层层独立文件层(分散存放)
  • 磁盘存储:相同哈希图层全局共享,多镜像共用底层,省空间
  • pull拉取时:分层按需下载,本地已有图层直接跳过,只拉缺失层

❗ 镜像阶段只是"存储分层",不会堆叠,堆叠只在容器启动时发生。


三、运行阶段:docker run 容器启动(核心底层技术)

3.1 容器启动真正做的事(必考底层)

执行 docker run 瞬间触发两大核心技术:

1)OverlayFS 联合文件系统(堆叠)

把镜像所有只读层按顺序从下到上完整堆叠,合成一个完整文件系统视图。

2)自动新增「容器读写层」

在所有镜像层最顶部生成一层:

  • 可读写、容器独占、临时存在
  • 所有容器内修改只写这一层(CoW写时复制)
  • 删除容器立刻销毁,镜像层纹丝不动

3.2 镜像 vs 容器 终极区别

  • 镜像:只有只读层、静态模板、永久存在
  • 容器:只读镜像层 + 独立读写层、动态进程、临时存在

四、编排阶段:Docker Compose(多容器生命周期管理)

单个 docker run 只能跑单个容器;

Compose 是批量管理多个关联容器的工具。

4.1 核心能力

  • 统一配置:镜像、端口、目录、网络、启动顺序、环境变量
  • 一键启停整套微服务
  • 自动创建容器内网,服务名互通
  • 支持构建目标 target(开发/生产镜像切换)

4.2 体系位置

Dockerfile构建镜像 → 镜像run成容器 → compose统一编排多容器

这就是本地开发、测试、上线的完整流水线。


五、链路闭环总结

1. 编写 Dockerfile:定义分层规则、利用构建缓存、多阶段剥离源码与工具

2. docker build:生成多层只读镜像,每层对应文件变更记录

3. docker pull(可选) :分层落地磁盘,复用本地图层,节省空间带宽

4. docker run:OverlayFS 堆叠所有镜像层 + 新增独立读写层,形成运行容器

5. docker compose:编排前端、后端、数据库、中间件多容器协同工作


六、总结

  1. 镜像层只读,容器读写层临时,删容器不影响镜像。
  2. 构建缓存从上到下失效,所以依赖和代码要分层写。
  3. 多阶段构建隔离构建环境与运行环境,保证生产镜像干净安全。
  4. 镜像只是分层文件,容器启动才会堆叠文件系统。
  5. Compose 只负责编排容器,不构建镜像,镜像由 Dockerfile 生成。
相关推荐
梦帮科技4 小时前
LoRA / QLoRA 低秩矩阵流形更新:SVD 分解、秩与缩放因子 α 的物理意义与梯度稳定性保障
网络·深度学习·神经网络·线性代数·矩阵·架构·数据挖掘
天远数科4 小时前
零信任架构实战:基于天远运营商三要素简版V即时版查询构建自动化买手实名核验网关
运维·人工智能·架构·自动化
光依旧4 小时前
MCP实战手记(八):从“能跑“到“能上线“——无状态MCP Server的生产落地清单
java·人工智能·spring boot·架构·ai agent·mcp
阿拉斯攀登4 小时前
从需求文档到方案-无人售货机纯视觉与免密支付
架构
阿拉斯攀登4 小时前
双门两路锁四摄-售货机硬件形态的软件建模
架构
abigalexy5 小时前
图解AI应用架构设计
人工智能·ai·架构·系统架构·aigc
龙亘川5 小时前
智慧交通运输监管平台业务建模与架构解析
人工智能·架构·智慧城市·数据可视化·政务
AOI小白新手上路5 小时前
韦东山 3-5 I.MX6ULL 的 LED 编程 · 学习笔记
arm开发·笔记·单片机·学习·架构·硬件架构
Marst Code5 小时前
IBM 开放了 PC 架构,然后把自己“开放“出局了
架构
范桂飓7 小时前
AWS Agent Infra 架构分析
java·架构·aws