mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-11 12:21:17 +00:00
Continue to fix format issues
This commit is contained in:
@@ -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"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -98,16 +98,3 @@ $ docker run -h myweb nginx
|
||||
- **解决**:使用自定义网络 (`docker network create ...`)。
|
||||
|
||||
---
|
||||
|
||||
### 本章小结
|
||||
|
||||
| 场景 | DNS 行为 | 备注 |
|
||||
|------|----------|------|
|
||||
| **默认网络** | 继承宿主机 | 不支持容器名解析 |
|
||||
| **自定义网络** | Docker 嵌入式 DNS | ✅ 支持容器名解析 |
|
||||
| **手动指定** | 使用 `--dns` | 覆盖默认配置 |
|
||||
|
||||
### 延伸阅读
|
||||
|
||||
- [网络模式](README.md):Docker 网络概览
|
||||
- [端口映射](port_mapping.md):外部访问
|
||||
|
||||
@@ -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 模式不需要端口映射
|
||||
|
||||
24
08_data_network/network/summary.md
Normal file
24
08_data_network/network/summary.md
Normal 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 模式不需要端口映射
|
||||
Reference in New Issue
Block a user