style(docs): standardize heading formats and numbering

- Enforce Level 1-3 structural numbering based on SUMMARY.md hierarchy
- Remove structural numbering from Level 4+ headings
- Eliminate single child headings by converting to bold text
- Auto-inject summary text for headings with multiple children missing intro text
- Exclude Appendix chapters from structural numbering
- Avoid modifying code block contents
- Add script to detect non-standard English usage in headers
This commit is contained in:
Baohua Yang
2026-02-21 22:40:33 -08:00
parent 33af380be1
commit 175aaae48a
136 changed files with 1015 additions and 766 deletions

View File

@@ -1,8 +1,8 @@
## 14.1 基本架构
## 11.1 基本架构
Docker 的架构设计简洁而高效主要由客户端和服务端两部分组成
### 核心架构图
### 11.1.1 核心架构图
Docker 采用了 **C/S (客户端/服务端)** 架构Client Daemon 发送请求Daemon 负责构建运行和分发容器
@@ -23,7 +23,7 @@ graph LR
---
### 组件详解
### 11.1.2 组件详解
Docker 的内部架构如同洋葱一样分层每一层专注解决特定问题
@@ -66,7 +66,7 @@ Docker 的大脑。
---
### 容器启动流程
### 11.1.3 容器启动流程
当执行 `docker run -d nginx` 内部发生了什么
@@ -110,7 +110,7 @@ flowchart TD
---
### Docker Engine v29+ 变化
### 11.1.4 Docker Engine v29+ 变化
Docker Engine v29 (2025/2026) 开始架构进一步简化和标准化
@@ -119,7 +119,7 @@ flowchart TD
---
### Docker Desktop 架构
### 11.1.5 Docker Desktop 架构
macOS Windows 因为内核差异架构稍微复杂
@@ -140,7 +140,7 @@ flowchart TD
---
### 总结
### 11.1.6 总结
相关信息如下表
@@ -152,7 +152,7 @@ flowchart TD
| **Shim** | 监工 | 保持 IO允许无守护进程重启 |
| **Runc** | 工人 | 真正干活 (创建容器)干完就走 |
### 延伸阅读
### 11.1.7 延伸阅读
- [命名空间](./18.2_namespace.md)Runc 如何隔离容器
- [控制组](./18.3_cgroups.md)Runc 如何限制资源

View File

@@ -1,6 +1,6 @@
命名空间 (Namespace) Linux 内核的一个强大特性为容器提供了隔离的运行环境
## 什么是 Namespace
## 11.2 什么是 Namespace
> **Namespace Linux 内核提供的资源隔离机制它让容器内的进程仿佛运行在独立的操作系统中** Namespace 是容器技术的核心基础之一它回答了一个关键问题**如何让一个进程 以为 自己独占整个系统**
@@ -24,7 +24,7 @@ flowchart LR
H4 -. "(实际是宿主机的 1234" .- C1
```
### Namespace 的类型
### 11.2.1 Namespace 的类型
Linux 内核提供了以下几种 NamespaceDocker 容器使用了全部
@@ -40,7 +40,7 @@ Linux 内核提供了以下几种 NamespaceDocker 容器使用了全部:
---
### PID Namespace
### 11.2.2 PID Namespace
PID Namespace 负责进程 ID 的隔离使得容器内的进程彼此不可见
@@ -75,7 +75,7 @@ PID USER COMMAND
---
### NET Namespace
### 11.2.3 NET Namespace
NET Namespace 负责网络栈的隔离包括网卡路由表和 iptables 规则等
@@ -112,7 +112,7 @@ flowchart LR
---
### MNT Namespace
### 11.2.4 MNT Namespace
MNT Namespace 负责文件系统挂载点的隔离确保容器看到独立的文件系统视图
@@ -149,7 +149,7 @@ MNT Namespace 负责文件系统挂载点的隔离,确保容器看到独立的
---
### UTS Namespace
### 11.2.5 UTS Namespace
UTS Namespace 主要用于隔离主机名和域名
@@ -177,7 +177,7 @@ UTS = “UNIX Time-sharing System”是历史遗留的名称。
---
### IPC Namespace
### 11.2.6 IPC Namespace
IPC Namespace 用于隔离进程间通信资源 System V IPC POSIX 消息队列
@@ -198,7 +198,7 @@ IPC Namespace 用于隔离进程间通信资源,如 System V IPC 和 POSIX 消
---
### USER Namespace
### 11.2.7 USER Namespace
USER Namespace 允许将容器内的用户 ID 映射到宿主机的不同用户 ID
@@ -236,7 +236,7 @@ flowchart LR
---
### 动手实验体验 Namespace
### 11.2.8 动手实验体验 Namespace
使用 `unshare` 命令可以在不使用 Docker 的情况下体验 Namespace
@@ -301,7 +301,7 @@ $ ip addr
---
### Namespace 的局限性
### 11.2.9 Namespace 的局限性
Namespace 提供了隔离但不是安全边界

View File

@@ -1,8 +1,8 @@
## 14.3 控制组
## 11.3 控制组
控制组 (Cgroups) Linux 内核提供的另一种关键机制主要用于资源的限制和审计
### 什么是控制组
### 11.3.1 什么是控制组
控制组 (Control Groups简称 cgroups) Linux 内核的一个特性用于 **限制记录和隔离** 进程组的资源使用 (CPU内存磁盘 I/O网络等)
@@ -31,7 +31,7 @@ flowchart LR
---
### cgroups 的历史
### 11.3.2 cgroups 的历史
相关信息如下表
@@ -44,7 +44,7 @@ flowchart LR
---
### cgroups 可以限制的资源
### 11.3.3 cgroups 可以限制的资源
相关信息如下表
@@ -58,7 +58,7 @@ flowchart LR
---
### Docker 中的资源限制
### 11.3.4 Docker 中的资源限制
Docker 提供了丰富的参数来配置容器的资源限制主要包括内存CPU磁盘 I/O
@@ -142,7 +142,7 @@ $ docker run --pids-limit=100 myapp
---
### 查看容器资源使用
### 11.3.5 查看容器资源使用
运行以下命令
@@ -165,7 +165,7 @@ $ docker inspect mycontainer --format '{{json .HostConfig}}' | jq
---
### 资源限制的效果
### 11.3.6 资源限制的效果
本节涵盖了相关内容与详细描述主要探讨以下几个方面
@@ -209,7 +209,7 @@ $ docker run --rm --cpus=1 stress --cpu 4
---
### cgroups v1 vs v2
### 11.3.7 cgroups v1 vs v2
相关信息如下表
@@ -245,7 +245,7 @@ nodev cgroup2
---
### Compose 中设置限制
### 11.3.8 Compose 中设置限制
Compose 中设置限制配置如下
@@ -265,7 +265,7 @@ services:
---
### 最佳实践
### 11.3.9 最佳实践
在使用 Cgroups 限制资源时遵循一些最佳实践可以避免潜在的问题

View File

@@ -1,8 +1,8 @@
## 14.4 联合文件系统
## 11.4 联合文件系统
联合文件系统 (UnionFS) Docker 镜像分层存储的基础它允许将多个目录挂载为同一个虚拟文件系统
### 什么是联合文件系统
### 11.4.1 什么是联合文件系统
联合文件系统 (UnionFS) 是一种 **分层轻量级** 的文件系统它将多个目录 联合 挂载到同一个虚拟目录形成一个统一的文件系统视图
@@ -24,7 +24,7 @@ flowchart TD
---
### 为什么 Docker 使用联合文件系统
### 11.4.2 为什么 Docker 使用联合文件系统
Docker 选择联合文件系统作为其存储驱动主要基于以下几个核心优势
@@ -62,7 +62,7 @@ COPY . . # 层4应用代码
---
### Copy-on-Write (写时复制)
### 11.4.3 Copy-on-Write (写时复制)
当容器修改只读层中的文件时
@@ -92,7 +92,7 @@ flowchart LR
---
### Docker 支持的存储驱动
### 11.4.4 Docker 支持的存储驱动
Docker 可使用多种联合文件系统实现
@@ -128,7 +128,7 @@ Storage Driver: overlay2
---
### overlay2 工作原理
### 11.4.5 overlay2 工作原理
overlay2 是目前最推荐的存储驱动
@@ -169,7 +169,7 @@ flowchart TD
---
### 查看镜像层
### 11.4.6 查看镜像层
运行以下命令
@@ -198,7 +198,7 @@ $ docker inspect nginx:alpine --format '{{json .GraphDriver.Data}}' | jq
---
### 最佳实践
### 11.4.7 最佳实践
为了构建高效轻量的镜像我们在使用联合文件系统时应注意以下几点

View File

@@ -1,3 +1,3 @@
## 14.5 容器格式
## 11.5 容器格式
最初Docker 采用了 `LXC` 中的容器格式 0.7 版本以后开始去除 LXC转而使用自行开发的 [libcontainer](https://github.com/docker/libcontainer),从 1.11 开始,则进一步演进为使用 [runC](https://github.com/opencontainers/runc) 和 [containerd](https://github.com/containerd/containerd)。

View File

@@ -1,8 +1,8 @@
## 14.6 Docker 网络实现
## 11.6 Docker 网络实现
Docker 的网络实现其实就是利用了 Linux 上的网络命名空间和虚拟网络设备 (特别是 veth pair)建议先熟悉了解这两部分的基本概念再阅读本章
### 基本原理
### 11.6.1 基本原理
首先要实现网络通信机器需要至少一个网络接口 (物理接口或虚拟接口) 来收发数据包此外如果不同子网之间要进行通信需要路由机制
@@ -11,7 +11,7 @@ Linux 通过在内核中进行数据复制来实现虚拟接口之间的数据
Docker 容器网络就利用了这项技术它在本地主机和容器内分别创建一个虚拟接口并让它们彼此连通 (这样的一对接口叫做 `veth pair`)
### 创建网络参数
### 11.6.2 创建网络参数
Docker 创建一个容器的时候会执行如下操作
@@ -29,7 +29,7 @@ Docker 创建一个容器的时候,会执行如下操作:
* `--net=container:NAME_or_ID` Docker 将新建容器的进程放到一个已存在容器的网络栈中新容器进程有自己的文件系统进程列表和资源限制但会和已存在的容器共享 IP 地址和端口等网络资源两者进程可以直接通过 `lo` 环回接口通信
* `--net=none` Docker 将新容器放到隔离的网络栈中但是不进行网络配置之后用户可以自己进行配置
### 网络配置细节
### 11.6.3 网络配置细节
用户使用 `--net=none` 可以自行配置网络让容器达到跟平常一样具有访问网络的权限通过这个过程可以了解 Docker 配置网络的细节

View File

@@ -1,4 +1,4 @@
## 本章小结
## 11.7 本章小结
相关信息如下表
@@ -11,7 +11,7 @@
| IPC | 进程间通信 | 容器间 IPC 隔离 |
| USER | 用户 ID | 容器 root 宿主机 root |
### 延伸阅读
### 11.7.1 延伸阅读
- [控制组 (Cgroups)](18.3_cgroups.md)资源限制机制
- [联合文件系统](18.4_ufs.md)分层存储的实现
@@ -26,7 +26,7 @@
| **磁盘 I/O** | `--device-write-bps` | `--device-write-bps /dev/sda:10mb` |
| **进程数** | `--pids-limit` | `--pids-limit=100` |
### 延伸阅读
### 11.7.2 延伸阅读
- [命名空间](18.2_namespace.md)资源隔离
- [安全](../17_security/README.md)容器安全概述
@@ -39,7 +39,7 @@
| **overlay2** | Docker 默认推荐的存储驱动 |
| **分层好处** | 镜像复用快速构建快速启动 |
### 延伸阅读
### 11.7.3 延伸阅读
- [镜像](../02_basic_concept/2.1_image.md)理解镜像分层
- [容器](../02_basic_concept/2.2_container.md)容器存储层