diff --git a/02_basic_concept/2.1_image.md b/02_basic_concept/2.1_image.md
index 702b6b0..f8dbdfc 100644
--- a/02_basic_concept/2.1_image.md
+++ b/02_basic_concept/2.1_image.md
@@ -178,7 +178,7 @@ ubuntu:24.04
nginx # 等同于 nginx:latest
```
-#### 2. 镜像 ID (Content-Addressable)
+#### 2. 镜像 ID:Content-Addressable 标识
每个镜像有一个基于内容计算的唯一 ID:
diff --git a/02_basic_concept/2.2_container.md b/02_basic_concept/2.2_container.md
index 248c1b1..3fc68fe 100644
--- a/02_basic_concept/2.2_container.md
+++ b/02_basic_concept/2.2_container.md
@@ -95,7 +95,7 @@ flowchart TD
ContainerLayer --> ImageLayerN --> ImageLayerN1 --> Dots --> ImageLayer1
```
-#### Copy-on-Write (写时复制)
+#### Copy-on-Write:写时复制
当容器需要修改镜像层中的文件时:
diff --git a/03_install/3.6_offline.md b/03_install/3.6_offline.md
index 49de2f8..624ef95 100644
--- a/03_install/3.6_offline.md
+++ b/03_install/3.6_offline.md
@@ -12,7 +12,7 @@
> 注意:以下命令以 CentOS 7 为例。对于 CentOS Stream 9、Rocky Linux 9 或 AlmaLinux 9,请将 `yum` 替换为 `dnf`,并将软件包后缀 `el7` 替换为 `el9`。
-#### YUM 本地文件安装 (推荐)
+#### YUM 本地文件安装:推荐
推荐这种方式,是因为在生产环境中一般会选定某个指定的文档软件版本使用。
@@ -78,7 +78,7 @@ Total
exiting because "Download Only" specified
```
-##### 复制到目标服务器之后进入文件夹安装 (C-N)
+##### 复制到目标服务器之后进入文件夹安装:C-N
* 离线安装时,必须使用 rpm 命令不检查依赖的方式安装
@@ -86,7 +86,7 @@ exiting because "Download Only" specified
rpm -Uvh *.rpm --nodeps --force
```
-##### 锁定软件版本 (C-N)
+##### 锁定软件版本:C-N
**下载锁定版本软件**
@@ -228,7 +228,7 @@ reposync -r docker-ce-stable -p /tmp/docker-ce/
createrepo /var/www/html/docker-ce/
```
-##### YUM 客户端设置 (C...N)
+##### YUM 客户端设置:C...N
```bash
rm -f /etc/yum.repos.d/*
@@ -253,7 +253,7 @@ EOF
```
-##### Docker 安装 (C...N)
+##### Docker 安装:C...N
```bash
sudo yum makecache fast
diff --git a/04_image/4.2_list.md b/04_image/4.2_list.md
index 103a75b..45c9a92 100644
--- a/04_image/4.2_list.md
+++ b/04_image/4.2_list.md
@@ -162,7 +162,7 @@ $ docker image prune
除了虚悬镜像,`docker image ls` 默认列出的只是顶层镜像。还有一种镜像是为了加速镜像构建、重复利用资源而存在的中间层镜像。
-#### 查看所有镜像 (包含中间层)
+#### 查看所有镜像:包含中间层
```bash
$ docker images -a
diff --git a/04_image/4.3_rm.md b/04_image/4.3_rm.md
index eb2af61..cfa6d8d 100644
--- a/04_image/4.3_rm.md
+++ b/04_image/4.3_rm.md
@@ -208,7 +208,7 @@ Untagged: ubuntu:24.04
当同一个镜像有多个标签时,`docker rmi` 只是删除指定的标签,不会删除镜像本身。
-#### 原因三:被其他镜像依赖 (中间层)
+#### 原因三:被其他镜像依赖:中间层
```bash
$ docker rmi some_base_image
diff --git a/04_image/4.5_build.md b/04_image/4.5_build.md
index cffe686..7194f0d 100644
--- a/04_image/4.5_build.md
+++ b/04_image/4.5_build.md
@@ -4,7 +4,7 @@
Dockerfile 是一个文本文件,其内包含了一条条的 **指令 (Instruction)**,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
-### 4.5.1 使用 docker init 快速创建 (推荐)
+### 4.5.1 使用 docker init 快速创建:推荐
Docker 提供了 `docker init` 命令,可以根据项目类型自动生成 Dockerfile、.dockerignore 和 compose.yaml 文件:
diff --git a/05_container/5.2_daemon.md b/05_container/5.2_daemon.md
index ff6fc63..9032ab3 100644
--- a/05_container/5.2_daemon.md
+++ b/05_container/5.2_daemon.md
@@ -13,7 +13,7 @@ Docker 容器默认是 **前台运行** 的。使用 `-d` (detach) 参数可以
### 5.2.2 基本使用
-#### 前台运行 (默认)
+#### 前台运行:默认
```bash
$ docker run ubuntu:24.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
@@ -29,7 +29,7 @@ hello world
- 按 `Ctrl+C` 会终止容器
- 关闭终端窗口,容器也会停止
-#### 后台运行 (使用 -d 参数)
+#### 后台运行:使用 -d 参数
```bash
$ docker run -d ubuntu:24.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
diff --git a/05_container/5.3_stop.md b/05_container/5.3_stop.md
index 3b5b00a..d09928f 100644
--- a/05_container/5.3_stop.md
+++ b/05_container/5.3_stop.md
@@ -14,7 +14,7 @@
---
-### 5.3.2 docker stop (推荐)
+### 5.3.2 docker stop:推荐
#### docker stop 基本用法
diff --git a/05_container/5.4_attach_exec.md b/05_container/5.4_attach_exec.md
index b2fe77d..ad297e7 100644
--- a/05_container/5.4_attach_exec.md
+++ b/05_container/5.4_attach_exec.md
@@ -22,7 +22,7 @@ Docker 提供两种进入容器的命令:
---
-### 5.4.3 docker exec (推荐)
+### 5.4.3 docker exec:推荐
#### docker exec 基本用法
@@ -109,7 +109,7 @@ root@69d137adef7a:/# # 有提示符
---
-### 5.4.4 docker attach (谨慎使用)
+### 5.4.4 docker attach:谨慎使用
#### docker attach 基本用法
diff --git a/05_container/5.6_rm.md b/05_container/5.6_rm.md
index bbf0383..dabc6f8 100644
--- a/05_container/5.6_rm.md
+++ b/05_container/5.6_rm.md
@@ -78,7 +78,7 @@ Total reclaimed space: 150MB
$ docker container prune -f
```
-#### 删除所有容器 (包括运行中的)
+#### 删除所有容器:包括运行中的
```bash
## 先停止所有容器,再删除
diff --git a/06_repository/6.1_dockerhub.md b/06_repository/6.1_dockerhub.md
index f1994f4..60fa88e 100644
--- a/06_repository/6.1_dockerhub.md
+++ b/06_repository/6.1_dockerhub.md
@@ -94,7 +94,7 @@ $ docker push username/myapp:v1
### 6.1.4 安全最佳实践
-#### 1. 启用 2FA (双因素认证)
+#### 1. 启用 2FA:双因素认证
为了保护您的 Docker Hub 账号安全,我们建议采取以下措施。
diff --git a/07_dockerfile/7.11_user.md b/07_dockerfile/7.11_user.md
index b6686bc..a5c415a 100644
--- a/07_dockerfile/7.11_user.md
+++ b/07_dockerfile/7.11_user.md
@@ -112,7 +112,7 @@ RUN addgroup -g 1001 -S appgroup && \
### 7.11.5 运行时切换用户
-#### 使用 gosu (推荐)
+#### 使用 gosu:推荐
在 ENTRYPOINT 脚本中切换用户时,不要使用 `su` 或 `sudo`,应使用 [gosu](https://github.com/tianon/gosu):
diff --git a/07_dockerfile/7.14_label.md b/07_dockerfile/7.14_label.md
index 2acb7db..3be6587 100644
--- a/07_dockerfile/7.14_label.md
+++ b/07_dockerfile/7.14_label.md
@@ -28,7 +28,7 @@ LABEL version="1.0"
LABEL description="这是一个 Web 应用服务器"
```
-#### 定义多个标签 (推荐)
+#### 定义多个标签:推荐
```docker
LABEL maintainer="user@example.com" \
@@ -68,7 +68,7 @@ LABEL org.opencontainers.image.authors="yeasy" \
---
-### 7.14.5 MAINTAINER 指令 (已废弃)
+### 7.14.5 MAINTAINER 指令:已废弃
旧版本的 Dockerfile 中常看到 `MAINTAINER` 指令:
diff --git a/07_dockerfile/7.1_run.md b/07_dockerfile/7.1_run.md
index 3887874..3e49768 100644
--- a/07_dockerfile/7.1_run.md
+++ b/07_dockerfile/7.1_run.md
@@ -40,7 +40,7 @@ RUN ["apt-get", "update"]
### 7.1.3 常见最佳实践
-#### 1. 组合命令 (减少层数)
+#### 1. 组合命令:减少层数
每一个 `RUN` 指令都会新建一层镜像。为了减少镜像体积和层数,应使用 `&&` 连接命令。
diff --git a/07_dockerfile/7.2_copy.md b/07_dockerfile/7.2_copy.md
index a2a8e79..657d1a6 100644
--- a/07_dockerfile/7.2_copy.md
+++ b/07_dockerfile/7.2_copy.md
@@ -84,7 +84,7 @@ COPY app[0-9].js /app/ # app0.js ~ app9.js
COPY app.js /usr/src/app/
```
-#### 相对路径 (基于 WORKDIR)
+#### 相对路径:基于 WORKDIR
```docker
WORKDIR /app
diff --git a/07_dockerfile/7.3_add.md b/07_dockerfile/7.3_add.md
index dbd7b4f..11dde46 100644
--- a/07_dockerfile/7.3_add.md
+++ b/07_dockerfile/7.3_add.md
@@ -30,7 +30,7 @@ ADD [选项] ["<源路径>", ... "<目标路径>"]
### 7.3.3 自动解压功能
-#### 基本用法 (自动解压本地 tar)
+#### 基本用法:自动解压本地 tar
```docker
## 自动解压 tar.gz 到目标目录
@@ -71,7 +71,7 @@ app.tar.gz 包含: /app/ 目录结果:
---
-### 7.3.4 URL 下载功能 (不推荐)
+### 7.3.4 URL 下载功能:不推荐
#### 基本用法
diff --git a/07_dockerfile/7.4_cmd.md b/07_dockerfile/7.4_cmd.md
index 83588ef..beba2bc 100644
--- a/07_dockerfile/7.4_cmd.md
+++ b/07_dockerfile/7.4_cmd.md
@@ -18,7 +18,7 @@ CMD 有三种格式:
| **shell 格式** | `CMD 命令 参数1 参数2` | ⚠️ 简单场景 |
| **参数格式** | `CMD [“参数1”, “参数2”]` | 配合 ENTRYPOINT |
-#### exec 格式 (推荐)
+#### exec 格式:推荐
```docker
CMD ["nginx", "-g", "daemon off;"]
diff --git a/07_dockerfile/7.5_entrypoint.md b/07_dockerfile/7.5_entrypoint.md
index f93a86a..1ca07ac 100644
--- a/07_dockerfile/7.5_entrypoint.md
+++ b/07_dockerfile/7.5_entrypoint.md
@@ -80,7 +80,7 @@ $ docker run myimage -v http://other.com # curl -s -v http://other.com ✓
### 7.5.4 场景一:让镜像像命令一样使用
-#### 需求 (启动前准备)
+#### 需求:启动前准备
创建一个查询公网 IP 的 “命令” 镜像。
diff --git a/08_data/8.1_volume.md b/08_data/8.1_volume.md
index 597c2a0..85c94a5 100644
--- a/08_data/8.1_volume.md
+++ b/08_data/8.1_volume.md
@@ -29,7 +29,7 @@ flowchart LR
### 8.1.3 数据卷 vs 容器存储层
-#### 容器存储层 (不推荐存储重要数据)
+#### 容器存储层:不推荐存储重要数据
```mermaid
graph TD
@@ -43,7 +43,7 @@ graph TD
Delete[容器删除] -->|导致| DataLost[数据丢失 ❌]
```
-#### 数据卷 (推荐)
+#### 数据卷:推荐
```mermaid
graph TD
@@ -105,7 +105,7 @@ $ docker volume inspect my-vol
### 8.1.5 挂载数据卷
-#### 方式一:--mount (推荐)
+#### 方式一:--mount:推荐
```bash
$ docker run -d \
@@ -122,7 +122,7 @@ $ docker run -d \
| `target` | 容器内挂载路径 |
| `readonly` | 可选,只读挂载 |
-#### 方式二:-v (简写)
+#### 方式二:-v:简写
```bash
$ docker run -d \
diff --git a/08_data/8.2_bind-mounts.md b/08_data/8.2_bind-mounts.md
index 137201e..9d129e5 100644
--- a/08_data/8.2_bind-mounts.md
+++ b/08_data/8.2_bind-mounts.md
@@ -53,7 +53,7 @@ flowchart LR
### 8.2.3 基本语法
-#### 使用 --mount (推荐)
+#### 使用 --mount:推荐
```bash
$ docker run -d \
@@ -61,7 +61,7 @@ $ docker run -d \
nginx
```
-#### 使用 -v (简写)
+#### 使用 -v:简写
```bash
$ docker run -d \
diff --git a/09_network/9.1_dns.md b/09_network/9.1_dns.md
index 04bba74..835a8cf 100644
--- a/09_network/9.1_dns.md
+++ b/09_network/9.1_dns.md
@@ -59,7 +59,7 @@ nameserver 114.114.114.114
$ docker run --dns-search=example.com myapp
```
-#### 3. --hostname (-h)
+#### 3. --hostname 与 -h
设置容器的主机名。
diff --git a/09_network/9.2_network_types.md b/09_network/9.2_network_types.md
index bb40d87..28e6058 100644
--- a/09_network/9.2_network_types.md
+++ b/09_network/9.2_network_types.md
@@ -22,7 +22,7 @@ ghi789... none null local
| **overlay** | 跨主机网络 | Docker Swarm 集群 |
| **macvlan** | 容器拥有独立 MAC 地址 | 需要直接接入物理网络 |
-### 9.2.2 Bridge 网络 (默认)
+### 9.2.2 Bridge 网络:默认
Bridge 是 Docker 默认使用的网络模式。Docker 启动时会自动创建 `docker0` 虚拟网桥,所有未指定网络的容器都会连接到这个网桥上。
diff --git a/09_network/9.7_advanced_networking.md b/09_network/9.7_advanced_networking.md
index 9301a36..67a24c6 100644
--- a/09_network/9.7_advanced_networking.md
+++ b/09_network/9.7_advanced_networking.md
@@ -10,7 +10,7 @@ Overlay 网络在现有网络基础上建立虚拟网络,允许容器跨宿主
Overlay 网络通过隧道封装技术(通常是 VXLAN)将容器网络流量封装在宿主机物理网络的 UDP 数据包中传输。
-```
+```text
容器 A (192.168.0.2)
↓
veth 对
@@ -250,7 +250,7 @@ Docker 内置 DNS 服务器,但 DNS 解析涉及多个层面的配置。
#### DNS 解析流程
-```
+```text
容器应用 (dig www.example.com)
↓
容器内 /etc/resolv.conf (127.0.0.11:53)
diff --git a/10_buildx/10.3_multi-arch-images.md b/10_buildx/10.3_multi-arch-images.md
index 9a71c7d..b3f7ec8 100644
--- a/10_buildx/10.3_multi-arch-images.md
+++ b/10_buildx/10.3_multi-arch-images.md
@@ -101,7 +101,7 @@ COPY bin/dist-${TARGETOS}-${TARGETARCH} /dist
ENTRYPOINT ["/dist"]
```
-### 10.3.3 使用 `docker manifest` (底层工具)
+### 10.3.3 使用 `docker manifest`:底层工具
除了 `docker buildx`,我们也可以直接操作 Manifest List 来手动组合不同架构的镜像。
diff --git a/11_compose/11.8_wordpress.md b/11_compose/11.8_wordpress.md
index 9e2e91b..600bda8 100644
--- a/11_compose/11.8_wordpress.md
+++ b/11_compose/11.8_wordpress.md
@@ -79,7 +79,7 @@ networks:
### 11.8.3 配置文件详解
-#### 1. 环境变量 (.env)
+#### 1. 环境变量文件 .env
为了安全,不要在 `compose.yaml` 中直接写密码。创建 `.env` 文件:
diff --git a/12_implementation/12.1_arch.md b/12_implementation/12.1_arch.md
index 614f1b8..83f830b 100644
--- a/12_implementation/12.1_arch.md
+++ b/12_implementation/12.1_arch.md
@@ -8,17 +8,10 @@ Docker 采用了 **C/S (客户端/服务端)** 架构。Client 向 Daemon 发送
```mermaid
graph LR
- Client[客户端 (Docker CLI)] -- docker run --> Dockerd
- Client -- docker pull --> Dockerd
-
- subgraph "Docker Host"
- Dockerd(dockerd
守护进程)
- Containers(Containers
容器)
- Images(Images
镜像)
-
- Dockerd -- 管理 --> Containers
- Dockerd -- 管理 --> Images
- end
+ C1["客户端"] -->|docker run| D["dockerd\n守护进程"]
+ C1 -->|docker pull| D
+ D -->|管理| C2["Containers\n容器"]
+ D -->|管理| C3["Images\n镜像"]
```
---
@@ -27,11 +20,11 @@ graph LR
Docker 的内部架构如同洋葱一样分层,每一层专注解决特定问题:
-#### 1. Docker CLI (客户端)
+#### 1. Docker CLI:客户端
用户与 Docker 交互的主要方式。它将用户命令 (如 `docker run`) 转换为 API 请求发送给 dockerd。
-#### 2. Dockerd (守护进程)
+#### 2. Dockerd:守护进程
Docker 的大脑。
@@ -39,7 +32,7 @@ Docker 的大脑。
- 管理 Docker 对象 (镜像、容器、网络、卷)
- 编排下层组件完成工作
-#### 3. Containerd (高级运行时)
+#### 3. Containerd:高级运行时
行业标准的容器运行时 (CNCF 毕业项目)。
@@ -48,7 +41,7 @@ Docker 的大脑。
- **不包含** 复杂的与容器无关的功能 (如构建、API)
- Kubernetes 也可以直接使用 containerd (跳过 Docker)
-#### 4. Runc (低级运行时)
+#### 4. Runc:低级运行时
用于创建和运行容器的 CLI 工具。
@@ -72,31 +65,24 @@ Docker 的大脑。
```mermaid
flowchart TD
- User((用户))
-
- subgraph DockerCLI [Docker CLI]
- Cmd[docker run -d nginx]
- end
-
- subgraph DockerHost [Docker Host]
- Dockerd[Dockerd]
- Containerd[Containerd]
- subgraph ContainerRuntime [Runtime]
- Shim[Containerd-shim]
- Runc[Runc]
- Container[容器进程 (nginx)]
- end
- end
-
- User --> Cmd
- Cmd -- 1. REST API --> Dockerd
- Dockerd -- 2. gRPC --> Containerd
- Containerd -- 3. 准备镜像 & Bundle --> Containerd
- Containerd -- 4. Fork --> Shim
- Shim -- 5. Exec --> Runc
- Runc -- 6. Create Namespaces/Cgroups --> Container
- Runc -.-> |7. Exit| Runc
- Shim -.-> |8. Monitor IO/Exit| Container
+ U["用户"]
+ K["docker run -d nginx"]
+ D["Dockerd"]
+ C["Containerd"]
+ B["OCI Bundle"]
+ S["Containerd-shim"]
+ R["Runc"]
+ P["容器进程\nnginx"]
+ E["退出"]
+
+ U -->|1. REST API| D
+ K -->|2. gRPC| C
+ C -->|3. 准备镜像和 Bundle| B
+ C -->|4. 启动 Shim| S
+ S -->|5. 执行| R
+ R -->|6. 创建 Namespaces 和 Cgroups| P
+ R -->|7. 进程退出| E
+ S -->|8. 监控 IO 和退出| P
```
1. **CLI** 发送请求给 **Dockerd**
diff --git a/12_implementation/12.4_ufs.md b/12_implementation/12.4_ufs.md
index b618ee7..aa93632 100644
--- a/12_implementation/12.4_ufs.md
+++ b/12_implementation/12.4_ufs.md
@@ -60,7 +60,7 @@ COPY . . # 层4:应用代码
---
-### 12.4.3 Copy-on-Write (写时复制)
+### 12.4.3 Copy-on-Write:写时复制
当容器修改只读层中的文件时:
diff --git a/13_kubernetes_concepts/13.1_intro.md b/13_kubernetes_concepts/13.1_intro.md
index 1131140..75bdd74 100644
--- a/13_kubernetes_concepts/13.1_intro.md
+++ b/13_kubernetes_concepts/13.1_intro.md
@@ -32,23 +32,23 @@ Kubernetes 完美解决了这些问题。
### 13.1.3 核心概念
-#### Pod (豆荚)
+#### Pod:豆荚
Kubernetes 的最小调度单位。一个 Pod 可以包含一个或多个紧密协作的容器 (共享网络和存储)。就像豌豆荚里的豌豆一样。
-#### Node (节点)
+#### Node:节点
运行 Pod 的物理机或虚拟机。
-#### Deployment (部署)
+#### Deployment:部署
定义应用的期望状态 (如:需要 3 个副本,镜像版本为 v1)。K8s 会持续确保当前状态符合期望状态。
-#### Service (服务)
+#### Service:服务
定义一组 Pod 的访问策略。提供稳定的 Cluster IP 和 DNS 名称,负责负载均衡。
-#### Namespace (命名空间)
+#### Namespace:命名空间
用于多租户资源隔离。
diff --git a/14_kubernetes_setup/14.1_kubeadm.md b/14_kubernetes_setup/14.1_kubeadm.md
index e384e44..5af0c0a 100644
--- a/14_kubernetes_setup/14.1_kubeadm.md
+++ b/14_kubernetes_setup/14.1_kubeadm.md
@@ -284,7 +284,7 @@ $ sudo modprobe overlay
$ sudo modprobe br_netfilter
```
-#### 禁用 swap (必须)
+#### 禁用 swap:必须
kubelet 默认要求禁用 swap,否则可能导致初始化失败或节点无法加入集群。
diff --git a/14_kubernetes_setup/14.2_kubeadm-docker.md b/14_kubernetes_setup/14.2_kubeadm-docker.md
index 0345cd3..dd7d6b2 100644
--- a/14_kubernetes_setup/14.2_kubeadm-docker.md
+++ b/14_kubernetes_setup/14.2_kubeadm-docker.md
@@ -1,4 +1,4 @@
-## 14.2 使用 kubeadm 部署 Kubernetes (使用 Docker)
+## 14.2 使用 kubeadm 部署 Kubernetes:使用 Docker
`kubeadm` 提供了 `kubeadm init` 以及 `kubeadm join` 这两个命令,作为快速创建 `Kubernetes` 集群的最佳实践。
@@ -70,7 +70,7 @@ $ sudo modprobe overlay
$ sudo modprobe br_netfilter
```
-#### 禁用 swap (必须)
+#### 禁用 swap:必须
kubelet 默认要求禁用 swap,否则可能导致初始化失败或节点无法加入集群。
diff --git a/14_kubernetes_setup/14.6_systemd.md b/14_kubernetes_setup/14.6_systemd.md
index bf1d443..413a5b1 100644
--- a/14_kubernetes_setup/14.6_systemd.md
+++ b/14_kubernetes_setup/14.6_systemd.md
@@ -25,7 +25,7 @@
为了让 systemd 管理 Kubernetes 服务,需要创建相应的 `.service` 文件,例如:
-```
+```text
/etc/systemd/system/kubelet.service
/etc/systemd/system/kube-proxy.service
/etc/systemd/system/kube-apiserver.service
diff --git a/16_cloud/16.2_tencentCloud.md b/16_cloud/16.2_tencentCloud.md
index effbcdc..fb0b93d 100644
--- a/16_cloud/16.2_tencentCloud.md
+++ b/16_cloud/16.2_tencentCloud.md
@@ -16,7 +16,7 @@
图 16-2:腾讯云容器服务示意图
-### 腾讯云容器服务 (TKE) 简介
+### 腾讯云容器服务:TKE 简介
腾讯云容器服务 (TKE, Tencent Kubernetes Engine) 是一款容器编排平台,基于原生 Kubernetes 提供,支持自动扩展、负载均衡、多可用区高可用等企业级功能。TKE 帮助开发者快速部署和管理容器化应用,消除集群运维的复杂度。
@@ -132,7 +132,7 @@ docker info | grep -A 5 "Registry Mirrors"
3. 在 JSON 配置中添加上述 `registry-mirrors` 字段
4. 点击 “Apply & Restart”
-### 腾讯云容器镜像服务 (TCR)
+### 腾讯云容器镜像服务:TCR
腾讯云容器镜像服务 (TCR) 提供企业级容器镜像存储和分发能力:
diff --git a/16_cloud/16.3_alicloud.md b/16_cloud/16.3_alicloud.md
index 6d51586..8b8be66 100644
--- a/16_cloud/16.3_alicloud.md
+++ b/16_cloud/16.3_alicloud.md
@@ -156,7 +156,7 @@ docker pull nginx:latest
time docker pull alpine:latest
```
-### 阿里云容器镜像服务 (ACR)
+### 阿里云容器镜像服务:ACR
阿里云容器镜像服务 (ACR, Container Registry) 是企业级的容器镜像存储和分发平台:
diff --git a/16_cloud/16.5_multicloud.md b/16_cloud/16.5_multicloud.md
index 61510dc..5af1396 100644
--- a/16_cloud/16.5_multicloud.md
+++ b/16_cloud/16.5_multicloud.md
@@ -16,14 +16,14 @@
随着企业业务的扩展,单一云平台可能无法满足所有需求,多云部署成为趋势。
-#### 1. 跨云灾备 (Active-Passive)
+#### 1. 跨云灾备:Active-Passive
主要业务运行在一个云 (如 AWS),数据实时复制到另一个云 (如阿里云)。当主云发生故障时,流量切换到备云。
* **优点**:架构相对简单,数据一致性好控制。
* **缺点**:资源闲置浪费,切换可能有 RTO。
-#### 2. 多活部署 (Active-Active)
+#### 2. 多活部署:Active-Active
业务同时在多个云上运行,通过全局流量管理 (DNS/GSLB) 分发流量。
diff --git a/18_security/18.3_daemon_sec.md b/18_security/18.3_daemon_sec.md
index 6b76bec..980de5c 100644
--- a/18_security/18.3_daemon_sec.md
+++ b/18_security/18.3_daemon_sec.md
@@ -48,7 +48,7 @@ dockerd \
> [!CAUTION]
> 永远不要将不可信的普通用户加入到 `docker` 用户组中。同样,在容器编排时尽量避免将宿主机的 `/var/run/docker.sock` 直接映射给普通容器使用,这种模式被称为 Docker-in-Docker (DinD) 或 Docker-out-of-Docker (DooD),存在极高的越权风险。
-### 18.3.3 Rootless 模式 (非特权运行)
+### 18.3.3 Rootless 模式:非特权运行
为了从根本上解决“拥有 Docker socket 就是 root”的问题,Docker 在近年推出了 **Rootless 模式**。
diff --git a/18_security/18.5_other_feature.md b/18_security/18.5_other_feature.md
index 472b6c6..08815db 100644
--- a/18_security/18.5_other_feature.md
+++ b/18_security/18.5_other_feature.md
@@ -39,7 +39,7 @@ chmod: /etc/passwd: Operation not permitted
```
应用只要被劫持进行越界尝试,其操作系统层命令便会立刻吃瘪。
-### 18.5.2 强制访问控制 (AppArmor / SELinux)
+### 18.5.2 强制访问控制:AppArmor / SELinux
传统的 Linux 模型遵循 DAC(自主访问控制),这意味着如果一个文件被赋予了全员读写权限(`777`),普通隔离下任何人便都能修改。但 **MAC(强制访问控制)** 技术,诸如 `AppArmor` (常用于 Ubuntu/Debian) 或 `SELinux` (常用于 CentOS/RHEL),可以制定比“文件所有权”更宏观且优先的策略控制模块。
diff --git a/19_observability/19.1_prometheus.md b/19_observability/19.1_prometheus.md
index 44bc1f8..2d94452 100644
--- a/19_observability/19.1_prometheus.md
+++ b/19_observability/19.1_prometheus.md
@@ -150,7 +150,7 @@ $ docker compose up -d
* **cAdvisor 无数据或报错**:确认挂载了 Docker 目录与宿主机的 `/sys`、`/var/run` 等路径,并确保宿主机上 Docker 运行正常。
* **指标缺失**:确认你的 Docker/内核版本与 cAdvisor 兼容;对于 containerd 等运行时,采集方式会不同。
-#### 关键指标速查 (节点/容器)
+#### 关键指标速查:节点/容器
在生产环境排障时,建议优先关注下面几类指标,并在 Grafana 面板中建立对应的常用视图。
diff --git a/19_observability/19.2_elk.md b/19_observability/19.2_elk.md
index 27f71bf..5ed9114 100644
--- a/19_observability/19.2_elk.md
+++ b/19_observability/19.2_elk.md
@@ -135,7 +135,7 @@ docker run -d \
* **时间窗口/时区**:Discover 右上角的时间范围默认可能是最近 15 分钟,且时区可能影响显示。建议先把范围扩大到最近 24 小时再验证。
* **数据解析失败**:若日志是非结构化文本,仍可入库但字段不可用;生产环境建议输出 JSON 并在采集端解析。
-#### 5. 验证日志是否写入 Elasticsearch (生产排错必备)
+#### 5. 验证日志是否写入 Elasticsearch:生产排错必备
当你在 Kibana 看不到日志时,建议先跳过 UI,从存储端直接验证“日志是否入库”。
diff --git a/21_case_devops/21.7_practical_examples.md b/21_case_devops/21.7_practical_examples.md
index 37f7a2d..053901b 100644
--- a/21_case_devops/21.7_practical_examples.md
+++ b/21_case_devops/21.7_practical_examples.md
@@ -113,7 +113,7 @@ docker history go-app:latest
**go.mod 和 go.sum 示例:**
-```
+```text
module github.com/example/go-app
go 1.20
diff --git a/README.md b/README.md
index 0e8e528..68b922e 100644
--- a/README.md
+++ b/README.md
@@ -65,7 +65,7 @@ graph LR
您也可以选择以下方式在本地离线阅读。
-#### 方式 1:Docker 镜像 (推荐)
+#### 方式 1:Docker 镜像:推荐
无需安装任何依赖,一条命令即可启动。
diff --git a/appendix/command/dockerd.md b/appendix/command/dockerd.md
index 89e450b..91ecc3a 100644
--- a/appendix/command/dockerd.md
+++ b/appendix/command/dockerd.md
@@ -4,7 +4,7 @@
`dockerd` 参数会随版本变化。建议优先在目标机器上执行 `dockerd --help`,并以 `daemon.json` 为主进行持久化配置。
-### 常用选项 (Docker Engine 29.x)
+### 常用选项:Docker Engine 29.x
* `--config-file="/etc/docker/daemon.json"`:指定 daemon 配置文件路径;
* `--data-root=""`:Docker 数据目录 (默认 `/var/lib/docker`);
diff --git a/appendix/example_guidelines.md b/appendix/example_guidelines.md
index 2767703..93a0530 100644
--- a/appendix/example_guidelines.md
+++ b/appendix/example_guidelines.md
@@ -24,7 +24,7 @@
* **全书统一标准**:所有的编排命令必须书写为 `docker compose` (带空格的 V2 CLI 插件版)。
* 不得在新的文档和案例中提及或使用旧版格式,除非是为了特意说明 V1 到 V2 的迁移。
-## 4. 可复现性目标 (以可重建为目标)
+## 4. 可复现性目标:以可重建为目标
本书中的所有实战和案例 (尤其 OS 与 DevOps 章节) 应尽量给出“最小可复现实验环境”。
diff --git a/appendix/faq/README.md b/appendix/faq/README.md
index aa5133c..85babc9 100644
--- a/appendix/faq/README.md
+++ b/appendix/faq/README.md
@@ -86,7 +86,7 @@ $ docker run --network=my-net --ip=172.25.3.3 -itd --name=my-container busybox
答:一般并不推荐在同一个容器内运行多个应用进程。如果有类似需求,可以通过一些额外的进程管理机制,比如 `supervisord` 来管理所运行的进程。可以参考 https://docs.docker.com/engine/containers/multi-service_container/ 。
-### 如何控制容器占用系统资源 (CPU、内存) 的份额?
+### 如何控制容器占用 CPU、内存等系统资源的份额?
答:在使用 `docker create` 命令创建容器或使用 `docker run` 创建并启动容器的时候,可以使用 -c|--cpu-shares\[=0] 参数来调整容器使用 CPU 的权重;使用 -m|--memory\[=MEMORY] 参数来调整容器使用内存的大小。
@@ -166,7 +166,7 @@ lrwxrwxrwx. 1 root root 15 11月 17 13:43 docker -> /storage/docker
## 其它
-### Docker 能在非 Linux 平台 (比如 Windows 或 macOS) 上运行么?
+### Docker 能在非 Linux 平台上运行么?比如 Windows 或 macOS
答:完全可以。安装方法请查看[安装 Docker](../../03_install/README.md) 一节
diff --git a/appendix/learning_roadmap.md b/appendix/learning_roadmap.md
index 715fdb6..e9bea1b 100644
--- a/appendix/learning_roadmap.md
+++ b/appendix/learning_roadmap.md
@@ -14,7 +14,7 @@ Docker 学习可分为四个递进阶段,每个阶段都有明确的学习目
- 了解镜像和仓库的基本操作
**核心内容:**
-```
+```text
Docker 简介
├── 为什么需要 Docker
├── 容器 vs 虚拟机 vs 云计算
@@ -64,7 +64,7 @@ Docker 安装配置
- 熟悉 Docker Compose 编排
**核心内容:**
-```
+```text
Dockerfile 指令详解
├── FROM / RUN / COPY / ADD
├── WORKDIR / ENV / ARG
@@ -122,7 +122,7 @@ Docker Compose
- 总计:4-6 周
**项目实战:**
-```
+```text
项目 1: Python Web 应用(Flask/Django)
- 编写多阶段 Dockerfile
- 使用 Compose 配置数据库
@@ -148,7 +148,7 @@ Docker Compose
- 熟悉 CI/CD 集成
**核心内容:**
-```
+```text
容器安全
├── 镜像安全
│ ├── 漏洞扫描(Trivy/Grype/Snyk)
@@ -231,7 +231,7 @@ CI/CD 集成
- 总计:6-12 周
**项目实战:**
-```
+```text
项目 1: 安全镜像构建流程
- 集成 Trivy 扫描
- 镜像签名和验证
@@ -263,7 +263,7 @@ CI/CD 集成
- 贡献开源社区
**核心内容:**
-```
+```text
Kubernetes 高级特性
├── 集群管理
│ ├── 节点管理和驱逐
@@ -329,7 +329,7 @@ DevOps 工程化
### 知识点依赖关系
-```
+```text
基础概念 (Week 0-2)
├── 容器 vs 虚拟机
├── Docker 三大概念
@@ -430,7 +430,7 @@ Kubernetes 进阶 (Week 24-36)
- 有效期:3 年
考试内容比例:
-```
+```text
镜像和仓库(20%)
- 镜像构建和管理
- 镜像层和缓存
@@ -513,7 +513,7 @@ docker stats / events / inspect
**Q1: Docker 容器和虚拟机有什么区别?**
A(要点):
-```
+```text
虚拟机:
- 完整的操作系统环境(GB 级)
- 启动时间:分钟级
@@ -532,7 +532,7 @@ A(要点):
**Q2: 什么是 Docker 镜像?它如何存储的?**
A(要点):
-```
+```text
镜像本质:
- 只读的文件系统快照
- 分层存储结构
@@ -552,7 +552,7 @@ A(要点):
**Q3: 容器如何实现隔离?**
A(要点):
-```
+```text
技术手段:
1. Namespace(资源隔离):
- PID Namespace:进程隔离
@@ -579,7 +579,7 @@ A(要点):
**Q4: 如何优化 Docker 镜像大小?**
A(要点):
-```
+```text
1. 选择合适的基础镜像:
scratch < alpine:3.17 < python:3.11-slim < python:3.11
@@ -610,7 +610,7 @@ A(要点):
**Q5: CMD 和 ENTRYPOINT 有什么区别?**
A(要点):
-```
+```text
CMD:
- 定义容器默认命令
- 容器运行时可被覆盖:docker run image_name custom_cmd
@@ -634,7 +634,7 @@ CMD ["--port", "8000"]
**Q6: Docker 网络驱动的区别?**
A(要点):
-```
+```text
Bridge(默认):
- 虚拟网桥,容器间通过网桥通信
- 支持端口映射
@@ -662,7 +662,7 @@ None:
**Q7: Volume 和 Bind Mount 有什么区别?**
A(要点):
-```
+```text
Volume:
- Docker 管理,存储位置:/var/lib/docker/volumes/
- 跨平台兼容,隔离性好
@@ -686,7 +686,7 @@ tmpfs:
**Q8: 如何提高 Docker 安全性?**
A(要点):
-```
+```text
镜像安全:
- 使用官方镜像或可信镜像源
- 定期扫描漏洞(Trivy/Grype)
@@ -714,7 +714,7 @@ A(要点):
**Q9: 容器被 OOM 杀死,如何诊断和解决?**
A(要点):
-```
+```text
诊断:
1. 检查容器是否被 OOM 杀死:
docker inspect | grep OOMKilled
@@ -746,7 +746,7 @@ A(要点):
**Q10: 如何在 CI/CD 中集成 Docker?**
A(要点):
-```
+```text
构建阶段:
- 触发器:Push / PR 事件
- 构建镜像:docker build