mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-11 20:31:18 +00:00
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:
@@ -1,8 +1,8 @@
|
||||
## 挂载主机目录
|
||||
## 8.3 挂载主机目录
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
### 什么是绑定挂载
|
||||
### 8.3.1 什么是绑定挂载
|
||||
|
||||
Bind Mount (绑定挂载) 将 **宿主机的目录或文件** 直接挂载到容器中。容器可以读写宿主机的文件系统。
|
||||
|
||||
@@ -23,7 +23,7 @@ flowchart LR
|
||||
|
||||
---
|
||||
|
||||
### Bind Mount vs Volume
|
||||
### 8.3.2 Bind Mount vs Volume
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
@@ -55,7 +55,7 @@ flowchart LR
|
||||
|
||||
---
|
||||
|
||||
### 基本语法
|
||||
### 8.3.3 基本语法
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
@@ -91,7 +91,7 @@ $ docker run -d \
|
||||
|
||||
---
|
||||
|
||||
### 使用场景
|
||||
### 8.3.4 使用场景
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
@@ -153,7 +153,7 @@ $ docker run --rm -it \
|
||||
|
||||
---
|
||||
|
||||
### 只读挂载
|
||||
### 8.3.5 只读挂载
|
||||
|
||||
防止容器修改宿主机文件:
|
||||
|
||||
@@ -180,7 +180,7 @@ touch: /app/config/new.txt: Read-only file system
|
||||
|
||||
---
|
||||
|
||||
### 挂载单个文件
|
||||
### 8.3.6 挂载单个文件
|
||||
|
||||
运行以下命令:
|
||||
|
||||
@@ -202,7 +202,7 @@ $ docker run -d \
|
||||
|
||||
---
|
||||
|
||||
### 查看挂载信息
|
||||
### 8.3.7 查看挂载信息
|
||||
|
||||
运行以下命令:
|
||||
|
||||
@@ -235,7 +235,7 @@ $ docker inspect mycontainer --format '{{json .Mounts}}' | jq
|
||||
|
||||
---
|
||||
|
||||
### 常见问题
|
||||
### 8.3.8 常见问题
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
@@ -287,7 +287,7 @@ $ docker run -v /host/path:/container/path:cached myapp
|
||||
|
||||
---
|
||||
|
||||
### 最佳实践
|
||||
### 8.3.9 最佳实践
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
## 本章小结
|
||||
## 8.5 本章小结
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
| **适用场景** | 开发环境、配置文件、日志 |
|
||||
| **vs Volume** | Bind 更灵活,Volume 更适合生产 |
|
||||
|
||||
### 延伸阅读
|
||||
### 8.5.1 延伸阅读
|
||||
|
||||
- [数据卷](volume.md):Docker 管理的持久化存储
|
||||
- [tmpfs 挂载](tmpfs.md):内存临时存储
|
||||
@@ -25,7 +25,7 @@
|
||||
| 清理未用 | `docker volume prune` |
|
||||
| 挂载数据卷 | `-v name:/path` 或 `--mount source=name,target=/path` |
|
||||
|
||||
### 延伸阅读
|
||||
### 8.5.2 延伸阅读
|
||||
|
||||
- [绑定挂载](bind-mounts.md):挂载宿主机目录
|
||||
- [tmpfs 挂载](tmpfs.md):内存中的临时存储
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
## tmpfs 挂载
|
||||
## 8.4 tmpfs 挂载
|
||||
|
||||
`tmpfs` 挂载会把数据放在宿主机内存中,而不是写入容器可写层或数据卷。
|
||||
|
||||
### 适用场景
|
||||
### 8.4.1 适用场景
|
||||
|
||||
- 临时缓存
|
||||
- 会话数据
|
||||
- 不希望落盘的敏感中间文件
|
||||
|
||||
### 基本用法
|
||||
### 8.4.2 基本用法
|
||||
|
||||
如下代码块所示,展示了相关示例:
|
||||
|
||||
@@ -22,13 +22,13 @@ $ docker run --tmpfs /run:rw,noexec,nosuid,size=64m nginx
|
||||
$ docker run --mount type=tmpfs,destination=/run,tmpfs-size=67108864 nginx
|
||||
```
|
||||
|
||||
### 注意事项
|
||||
### 8.4.3 注意事项
|
||||
|
||||
- 容器停止后,`tmpfs` 数据会丢失。
|
||||
- `tmpfs` 占用宿主机内存,建议显式限制大小。
|
||||
- 不适合需要持久化的数据。
|
||||
|
||||
### 与 Volume / Bind Mount 对比
|
||||
### 8.4.4 与 Volume / Bind Mount 对比
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
## 数据卷
|
||||
## 8.2 数据卷
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
### 为什么需要数据卷
|
||||
### 8.2.1 为什么需要数据卷
|
||||
|
||||
容器的存储层有一个关键问题:**容器删除后,数据就没了**。
|
||||
|
||||
@@ -17,7 +17,7 @@ flowchart LR
|
||||
|
||||
---
|
||||
|
||||
### 数据卷的特性
|
||||
### 8.2.2 数据卷的特性
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
@@ -31,7 +31,7 @@ flowchart LR
|
||||
|
||||
---
|
||||
|
||||
### 数据卷 vs 容器存储层
|
||||
### 8.2.3 数据卷 vs 容器存储层
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
@@ -71,7 +71,7 @@ graph TD
|
||||
|
||||
---
|
||||
|
||||
### 数据卷基本操作
|
||||
### 8.2.4 数据卷基本操作
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
@@ -121,7 +121,7 @@ $ docker volume inspect my-vol
|
||||
|
||||
---
|
||||
|
||||
### 挂载数据卷
|
||||
### 8.2.5 挂载数据卷
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
@@ -187,7 +187,7 @@ $ docker run -d \
|
||||
|
||||
---
|
||||
|
||||
### 使用场景示例
|
||||
### 8.2.6 使用场景示例
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
@@ -259,7 +259,7 @@ $ docker run -d \
|
||||
|
||||
---
|
||||
|
||||
### 数据卷管理
|
||||
### 8.2.7 数据卷管理
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
@@ -299,7 +299,7 @@ $ docker volume prune -f
|
||||
|
||||
---
|
||||
|
||||
### 数据卷备份与恢复
|
||||
### 8.2.8 数据卷备份与恢复
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
@@ -362,7 +362,7 @@ echo "Backed up ${VOLUME_NAME} to ${BACKUP_DIR}/${VOLUME_NAME}_${TIMESTAMP}.tar.
|
||||
|
||||
---
|
||||
|
||||
### 数据卷 vs 绑定挂载
|
||||
### 8.2.9 数据卷 vs 绑定挂载
|
||||
|
||||
Docker 有两种主要的数据持久化方式:
|
||||
|
||||
@@ -388,7 +388,7 @@ $ docker run -v /host/path:/app/data nginx
|
||||
|
||||
---
|
||||
|
||||
### 常见问题
|
||||
### 8.2.10 常见问题
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
## Docker 网络概述
|
||||
## 8.6 Docker 网络概述
|
||||
|
||||
Docker 容器需要网络来:
|
||||
|
||||
@@ -12,7 +12,7 @@ Docker 容器需要网络来:
|
||||
|
||||
Docker 在安装时会自动配置网络基础设施,大多数情况下开箱即用。
|
||||
|
||||
## 默认网络架构
|
||||
## 8.6 默认网络架构
|
||||
|
||||
Docker 启动时自动创建以下网络组件:
|
||||
|
||||
@@ -39,7 +39,7 @@ graph TD
|
||||
Internet((互联网)) <--> eth0
|
||||
```
|
||||
|
||||
### 核心组件
|
||||
### 8.6.1 核心组件
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
@@ -50,7 +50,7 @@ graph TD
|
||||
| **容器 eth0** | 容器内的网卡 |
|
||||
| **IP 地址** | 自动从 172.17.0.0/16 网段分配 |
|
||||
|
||||
### 数据流向
|
||||
### 8.6.2 数据流向
|
||||
|
||||
如下代码块所示,展示了相关示例:
|
||||
|
||||
@@ -74,7 +74,7 @@ flowchart LR
|
||||
|
||||
---
|
||||
|
||||
## Docker 网络类型
|
||||
## 8.6 Docker 网络类型
|
||||
|
||||
查看默认网络:
|
||||
|
||||
@@ -96,11 +96,11 @@ ghi789... none null local
|
||||
|
||||
---
|
||||
|
||||
## 用户自定义网络 (推荐)
|
||||
## 8.6 用户自定义网络 (推荐)
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
### 为什么要用自定义网络
|
||||
### 8.6.1 为什么要用自定义网络
|
||||
|
||||
默认 bridge 网络的局限:
|
||||
|
||||
@@ -110,7 +110,7 @@ ghi789... none null local
|
||||
| 所有容器在同一网络 | 更好的隔离性 |
|
||||
| 需要 --link (已废弃)| 原生支持服务发现 |
|
||||
|
||||
### 创建自定义网络
|
||||
### 8.6.2 创建自定义网络
|
||||
|
||||
运行以下命令:
|
||||
|
||||
@@ -124,7 +124,7 @@ $ docker network create mynet
|
||||
$ docker network inspect mynet
|
||||
```
|
||||
|
||||
### 使用自定义网络
|
||||
### 8.6.3 使用自定义网络
|
||||
|
||||
运行以下命令:
|
||||
|
||||
@@ -141,7 +141,7 @@ PING db (172.18.0.3): 56 data bytes
|
||||
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.083 ms
|
||||
```
|
||||
|
||||
### 容器名 DNS 解析
|
||||
### 8.6.4 容器名 DNS 解析
|
||||
|
||||
自定义网络自动提供 DNS 服务:
|
||||
|
||||
@@ -155,11 +155,11 @@ flowchart LR
|
||||
|
||||
---
|
||||
|
||||
## 容器互联
|
||||
## 8.6 容器互联
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
### 同一网络内的容器
|
||||
### 8.6.1 同一网络内的容器
|
||||
|
||||
同一自定义网络内的容器可以直接通信:
|
||||
|
||||
@@ -178,7 +178,7 @@ $ docker run -d --name app --network app-net myapp
|
||||
...
|
||||
```
|
||||
|
||||
### 连接到多个网络
|
||||
### 8.6.2 连接到多个网络
|
||||
|
||||
一个容器可以连接到多个网络:
|
||||
|
||||
@@ -196,7 +196,7 @@ $ docker network connect backend multi-net-container
|
||||
$ docker inspect multi-net-container --format '{{json .NetworkSettings.Networks}}'
|
||||
```
|
||||
|
||||
### ⚠️ --link 已废弃
|
||||
### 8.6.3 ⚠️ --link 已废弃
|
||||
|
||||
运行以下命令:
|
||||
|
||||
@@ -214,11 +214,11 @@ $ docker run --network mynet --name app myapp
|
||||
|
||||
---
|
||||
|
||||
## 端口映射
|
||||
## 8.6 端口映射
|
||||
|
||||
容器默认只能在 Docker 网络内访问。要从外部访问容器,需要端口映射:
|
||||
|
||||
### 基本语法
|
||||
### 8.6.1 基本语法
|
||||
|
||||
运行以下命令:
|
||||
|
||||
@@ -228,7 +228,7 @@ $ docker run --network mynet --name app myapp
|
||||
$ docker run -d -p 8080:80 nginx
|
||||
```
|
||||
|
||||
### 映射方式
|
||||
### 8.6.2 映射方式
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
@@ -240,7 +240,7 @@ $ docker run -d -p 8080:80 nginx
|
||||
| `-p 127.0.0.1:8080:80` | 只绑定本地 | 仅本机可访问 |
|
||||
| `-p 8080:80/udp` | UDP 端口 | UDP 协议 |
|
||||
|
||||
### 查看端口映射
|
||||
### 8.6.3 查看端口映射
|
||||
|
||||
运行以下命令:
|
||||
|
||||
@@ -249,7 +249,7 @@ $ docker port mycontainer
|
||||
80/tcp -> 0.0.0.0:8080
|
||||
```
|
||||
|
||||
### 端口映射示意图
|
||||
### 8.6.4 端口映射示意图
|
||||
|
||||
如下代码块所示,展示了相关示例:
|
||||
|
||||
@@ -261,7 +261,7 @@ flowchart TD
|
||||
|
||||
---
|
||||
|
||||
## 网络隔离
|
||||
## 8.6 网络隔离
|
||||
|
||||
不同网络之间默认隔离:
|
||||
|
||||
@@ -289,7 +289,7 @@ ping: db: Name or service not known
|
||||
|
||||
---
|
||||
|
||||
## 常用命令
|
||||
## 8.6 常用命令
|
||||
|
||||
运行以下命令:
|
||||
|
||||
@@ -325,7 +325,7 @@ $ docker network prune
|
||||
|
||||
---
|
||||
|
||||
## 本章小结
|
||||
## 8.6 本章小结
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
@@ -337,7 +337,7 @@ $ docker network prune
|
||||
| **网络隔离** | 不同网络默认隔离,增强安全性 |
|
||||
| **--link** | 已废弃,使用自定义网络替代 |
|
||||
|
||||
## 延伸阅读
|
||||
## 8.6 延伸阅读
|
||||
|
||||
- [配置 DNS](dns.md):自定义 DNS 设置
|
||||
- [端口映射](port_mapping.md):高级端口配置
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
## 配置 DNS
|
||||
## 8.7 配置 DNS
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
### 容器的 DNS 机制
|
||||
### 8.7.1 容器的 DNS 机制
|
||||
|
||||
Docker 容器的 DNS 配置有两种情况:
|
||||
|
||||
@@ -11,7 +11,7 @@ Docker 容器的 DNS 配置有两种情况:
|
||||
|
||||
---
|
||||
|
||||
### 嵌入式 DNS
|
||||
### 8.7.2 嵌入式 DNS
|
||||
|
||||
这是 Docker 网络最强大的功能之一。在自定义网络中,容器可以通过 “名字” 找到彼此,而不需要知道对方的 IP (因为 IP 可能会变)。
|
||||
|
||||
@@ -36,7 +36,7 @@ Docker 守护进程在 `127.0.0.11` 运行了一个 DNS 服务器。容器内的
|
||||
|
||||
---
|
||||
|
||||
### 配置 DNS 参数
|
||||
### 8.7.3 配置 DNS 参数
|
||||
|
||||
如果你需要手动配置容器的 DNS (例如使用内网 DNS 服务器),可以在 `docker run` 中使用以下参数:
|
||||
|
||||
@@ -67,7 +67,7 @@ $ docker run -h myweb nginx
|
||||
|
||||
---
|
||||
|
||||
### 全局 DNS 配置
|
||||
### 8.7.4 全局 DNS 配置
|
||||
|
||||
如果希望所有容器都使用特定的 DNS 服务器 (而不是继承宿主机),可以修改 `/etc/docker/daemon.json`:
|
||||
|
||||
@@ -84,7 +84,7 @@ $ docker run -h myweb nginx
|
||||
|
||||
---
|
||||
|
||||
### 常见问题
|
||||
### 8.7.5 常见问题
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
## 外部访问容器
|
||||
## 8.8 外部访问容器
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
### 为什么要映射端口
|
||||
### 8.8.1 为什么要映射端口
|
||||
|
||||
容器运行在自己的隔离网络环境中 (通常是 Bridge 模式)。这意味着:
|
||||
|
||||
@@ -21,7 +21,7 @@ flowchart TD
|
||||
|
||||
---
|
||||
|
||||
### 端口映射方式
|
||||
### 8.8.2 端口映射方式
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
@@ -72,7 +72,7 @@ abc123456 0.0.0.0:49153->80/tcp
|
||||
|
||||
---
|
||||
|
||||
### 查看端口映射
|
||||
### 8.8.3 查看端口映射
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
@@ -101,7 +101,7 @@ abc123456 nginx 0.0.0.0:8080->80/tcp web
|
||||
|
||||
---
|
||||
|
||||
### 最佳实践与安全
|
||||
### 8.8.4 最佳实践与安全
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
@@ -139,7 +139,7 @@ $ docker run -d -p 53:53/udp dns-server
|
||||
|
||||
---
|
||||
|
||||
### 实现原理
|
||||
### 8.8.5 实现原理
|
||||
|
||||
Docker 使用 `docker-proxy` 进程 (用户态) 或 `iptables` DNAT 规则 (内核态) 来实现端口转发。
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
## 本章小结
|
||||
## 8.9 本章小结
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
| **自定义网络** | Docker 嵌入式 DNS | ✅ 支持容器名解析 |
|
||||
| **手动指定** | 使用 `--dns` | 覆盖默认配置 |
|
||||
|
||||
### 延伸阅读
|
||||
### 8.9.1 延伸阅读
|
||||
|
||||
- [网络模式](README.md):Docker 网络概览
|
||||
- [端口映射](port_mapping.md):外部访问
|
||||
@@ -20,7 +20,7 @@
|
||||
| **安全性** | 默认监听所有 IP,敏感服务应绑定 `127.0.0.1` |
|
||||
| **查看** | 使用 `docker port` 或 `docker ps` |
|
||||
|
||||
### 延伸阅读
|
||||
### 8.9.2 延伸阅读
|
||||
|
||||
- [EXPOSE 指令](../../07_dockerfile/7.9_expose.md):在 Dockerfile 中声明端口
|
||||
- [网络模式](README.md):Host 模式不需要端口映射
|
||||
|
||||
Reference in New Issue
Block a user