Continue to fix format issues

This commit is contained in:
Baohua Yang
2026-02-21 10:47:37 -08:00
parent 47cfc173a6
commit 5ae315c9dd
48 changed files with 667 additions and 727 deletions

View File

@@ -4,14 +4,19 @@
Bind Mount绑定挂载**宿主机的目录或文件**直接挂载到容器中容器可以读写宿主机的文件系统
```
宿主机 容器
┌─────────────────────┐ ┌─────────────────────┐
/home/user/code/ │ │
│ ├── index.html │◄───────►│ /usr/share/nginx/ │
├── style.css │ Bind │ html/ │
│ └── app.js │ Mount │ (同一份文件) │
└─────────────────────┘ └─────────────────────┘
```mermaid
flowchart LR
subgraph Host ["宿主机"]
direction TB
Dir1["/home/user/code/<br/>├── index.html<br/>├── style.css<br/>└── app.js"]
end
subgraph Container ["容器"]
direction TB
Dir2["/usr/share/nginx/html/<br/>(同一份文件)"]
end
Dir1 <-->|Bind Mount| Dir2
```
---
@@ -29,16 +34,14 @@ Bind Mount绑定挂载将**宿主机的目录或文件**直接挂载到容
#### 选择建议
```
需求 推荐方案
─────────────────────────────────────────
开发时同步代码 → Bind Mount
持久化数据库数据 → Volume
共享配置文件 → Bind Mount
容器间共享数据 → Volume
备份方便 → Bind Mount直接访问
生产环境 → Volume
```
| 需求 | 推荐方案 |
|------|----------|
| 开发时同步代码 | Bind Mount |
| 持久化数据库数据 | Volume |
| 共享配置文件 | Bind Mount |
| 容器间共享数据 | Volume |
| 备份方便 | Bind Mount直接访问 |
| 生产环境 | Volume |
---
@@ -311,19 +314,3 @@ $ docker run -v /app/data:/data ...
```
---
### 本章小结
| 要点 | 说明 |
|------|------|
| **作用** | 将宿主机目录挂载到容器 |
| **语法** | `-v /宿主机:/容器` `--mount type=bind,...` |
| **只读** | 添加 `readonly` `:ro` |
| **适用场景** | 开发环境配置文件日志 |
| **vs Volume** | Bind 更灵活Volume 更适合生产 |
### 延伸阅读
- [数据卷](volume.md)Docker 管理的持久化存储
- [tmpfs 挂载](tmpfs.md)内存临时存储
- [Compose 数据管理](../../10_compose/10.5_compose_file.md)Compose 中的挂载配置

View File

@@ -0,0 +1,30 @@
## 本章小结
| 要点 | 说明 |
|------|------|
| **作用** | 将宿主机目录挂载到容器 |
| **语法** | `-v /宿主机:/容器` `--mount type=bind,...` |
| **只读** | 添加 `readonly` `:ro` |
| **适用场景** | 开发环境配置文件日志 |
| **vs Volume** | Bind 更灵活Volume 更适合生产 |
### 延伸阅读
- [数据卷](volume.md)Docker 管理的持久化存储
- [tmpfs 挂载](tmpfs.md)内存临时存储
- [Compose 数据管理](../../10_compose/10.5_compose_file.md)Compose 中的挂载配置
| 操作 | 命令 |
|------|------|
| 创建数据卷 | `docker volume create name` |
| 列出数据卷 | `docker volume ls` |
| 查看详情 | `docker volume inspect name` |
| 删除数据卷 | `docker volume rm name` |
| 清理未用 | `docker volume prune` |
| 挂载数据卷 | `-v name:/path` `--mount source=name,target=/path` |
### 延伸阅读
- [绑定挂载](bind-mounts.md)挂载宿主机目录
- [tmpfs 挂载](tmpfs.md)内存中的临时存储
- [存储驱动](../../14_implementation/14.4_ufs.md)Docker 存储的底层原理

View File

@@ -397,20 +397,3 @@ $ docker volume inspect my-vol
3. 在目标机器恢复
---
### 本章小结
| 操作 | 命令 |
|------|------|
| 创建数据卷 | `docker volume create name` |
| 列出数据卷 | `docker volume ls` |
| 查看详情 | `docker volume inspect name` |
| 删除数据卷 | `docker volume rm name` |
| 清理未用 | `docker volume prune` |
| 挂载数据卷 | `-v name:/path` `--mount source=name,target=/path` |
### 延伸阅读
- [绑定挂载](bind-mounts.md)挂载宿主机目录
- [tmpfs 挂载](tmpfs.md)内存中的临时存储
- [存储驱动](../../14_implementation/14.4_ufs.md)Docker 存储的底层原理

View File

@@ -47,10 +47,22 @@ graph TD
### 数据流向
```
容器 A (172.17.0.2) → docker0 → 容器 B (172.17.0.3) (容器间通信)
容器 A (172.17.0.2) → docker0 → eth0 → 互联网 (访问外网)
外部请求 → eth0 → docker0 → 容器 A (被外部访问,需端口映射)
```mermaid
flowchart LR
subgraph Comm1 ["容器间通信"]
direction LR
C1A["容器 A (172.17.0.2)"] --> D0A["docker0"] --> C1B["容器 B (172.17.0.3)"]
end
subgraph Comm2 ["访问外网"]
direction LR
C2A["容器 A (172.17.0.2)"] --> D0B["docker0"] --> Eth0A["eth0"] --> InternetA["互联网"]
end
subgraph Comm3 ["被外部访问,需端口映射"]
direction LR
Req["外部请求"] --> Eth0B["eth0"] --> D0C["docker0"] --> C3A["容器 A"]
end
```
---
@@ -124,17 +136,12 @@ PING db (172.18.0.3): 56 data bytes
自定义网络自动提供 DNS 服务
```
┌─────────────────────────────────────────────────────────┐
│ mynet 网络 │
│ ┌─────────┐ DNS ┌─────────┐ │
web │ ──── "db" → 172.18.0.3 ───► │ db │ │
│ │172.18.0.2│ │172.18.0.3│ │
│ └─────────┘ └─────────┘ │
│ │
│ web 容器可以用 "db" 作为主机名访问 db 容器 │
└─────────────────────────────────────────────────────────┘
```mermaid
flowchart LR
subgraph MyNet ["mynet 网络 : web 容器可以用 'db' 作为主机名访问 db 容器"]
direction LR
Web["web<br/>172.18.0.2"] -- "DNS: 'db' → 172.18.0.3" --> DB["db<br/>172.18.0.3"]
end
```
---
@@ -231,17 +238,10 @@ $ docker port mycontainer
### 端口映射示意图
```
外部请求 http://宿主机IP:8080
┌─────────────┐
│ 宿主机:8080 │ ─── iptables NAT ───┐
└─────────────┘ │
┌───────────────┐
│ 容器 nginx:80 │
└───────────────┘
```mermaid
flowchart TD
Req["外部请求 http://宿主机IP:8080"] --> Host["宿主机:8080"]
Host -- "iptables NAT" --> Container["容器 nginx:80"]
```
---

View File

@@ -98,16 +98,3 @@ $ docker run -h myweb nginx
- **解决**使用自定义网络 (`docker network create ...`)
---
### 本章小结
| 场景 | DNS 行为 | 备注 |
|------|----------|------|
| **默认网络** | 继承宿主机 | 不支持容器名解析 |
| **自定义网络** | Docker 嵌入式 DNS | 支持容器名解析 |
| **手动指定** | 使用 `--dns` | 覆盖默认配置 |
### 延伸阅读
- [网络模式](README.md)Docker 网络概览
- [端口映射](port_mapping.md)外部访问

View File

@@ -9,19 +9,11 @@
为了让外部如你的浏览器其他局域网机器访问容器内的服务我们需要将容器的端口**映射**到宿主机的端口
```
外部用户 (Browser)
宿主机 (localhost:8080)
┌────┴────┐ 端口映射
│ Docker │ (8080 -> 80)
│ Proxy │
└────┬────┘
容器 (Class B: 80)
```mermaid
flowchart TD
User["外部用户 (Browser)"] --> Host["宿主机 (localhost:8080)"]
Host --> Proxy["Docker Proxy<br/>端口映射 (8080 -> 80)"]
Proxy --> Container["容器 (Class B: 80)"]
```
---
@@ -152,17 +144,3 @@ iptables -t nat -A DOCKER -p tcp --dport 8080 -j DNAT --to-destination 172.17.0.
这也是为什么你在容器内部看到的访问来源 IP 通常是网关 IP 172.17.0.1而不是真实的外部 Client IP除非使用 host 网络模式
---
### 本章小结
| 要点 | 说明 |
|------|------|
| **-p** | 指定端口映射常用 `8080:80` |
| **-P** | 随机映射所有 EXPOSE 的端口 |
| **安全性** | 默认监听所有 IP敏感服务应绑定 `127.0.0.1` |
| **查看** | 使用 `docker port` `docker ps` |
### 延伸阅读
- [EXPOSE 指令](../../07_dockerfile/7.9_expose.md) Dockerfile 中声明端口
- [网络模式](README.md)Host 模式不需要端口映射

View File

@@ -0,0 +1,24 @@
## 本章小结
| 场景 | DNS 行为 | 备注 |
|------|----------|------|
| **默认网络** | 继承宿主机 | 不支持容器名解析 |
| **自定义网络** | Docker 嵌入式 DNS | 支持容器名解析 |
| **手动指定** | 使用 `--dns` | 覆盖默认配置 |
### 延伸阅读
- [网络模式](README.md)Docker 网络概览
- [端口映射](port_mapping.md)外部访问
| 要点 | 说明 |
|------|------|
| **-p** | 指定端口映射常用 `8080:80` |
| **-P** | 随机映射所有 EXPOSE 的端口 |
| **安全性** | 默认监听所有 IP敏感服务应绑定 `127.0.0.1` |
| **查看** | 使用 `docker port` `docker ps` |
### 延伸阅读
- [EXPOSE 指令](../../07_dockerfile/7.9_expose.md) Dockerfile 中声明端口
- [网络模式](README.md)Host 模式不需要端口映射