mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-11 12:21:17 +00:00
Fix heading hierarchy
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
在生产环境中,推荐使用用户自定义网络代替默认的 bridge 网络。自定义网络提供了更好的隔离性和服务发现能力。
|
||||
|
||||
### 9.4.1 为什么要用自定义网络
|
||||
### 9.3.1 为什么要用自定义网络
|
||||
|
||||
默认 bridge 网络存在以下局限,而自定义网络可以很好地解决这些问题:
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
| 所有容器在同一网络 | 更好的隔离性 |
|
||||
| 需要 --link (已废弃)| 原生支持服务发现 |
|
||||
|
||||
### 9.4.2 创建自定义网络
|
||||
### 9.3.2 创建自定义网络
|
||||
|
||||
使用 `docker network create` 命令可以创建自定义网络:
|
||||
|
||||
@@ -26,7 +26,7 @@ $ docker network create mynet
|
||||
$ docker network inspect mynet
|
||||
```
|
||||
|
||||
### 9.4.3 使用自定义网络
|
||||
### 9.3.3 使用自定义网络
|
||||
|
||||
启动容器时通过 `--network` 参数指定连接的网络:
|
||||
|
||||
@@ -43,7 +43,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
|
||||
```
|
||||
|
||||
### 9.4.4 容器名 DNS 解析
|
||||
### 9.3.4 容器名 DNS 解析
|
||||
|
||||
自定义网络自动提供 DNS 服务。Docker 守护进程在 `127.0.0.11` 运行了一个嵌入式 DNS 服务器,容器内的 DNS 请求会被转发到这里:
|
||||
|
||||
@@ -58,7 +58,7 @@ flowchart LR
|
||||
end
|
||||
```
|
||||
|
||||
### 9.4.5 常用网络命令
|
||||
### 9.3.5 常用网络命令
|
||||
|
||||
以下是 Docker 网络管理中常用的命令:
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
容器之间的网络通信是 Docker 网络的核心功能之一。本节介绍容器互联的几种方式。
|
||||
|
||||
### 9.5.1 同一网络内的容器
|
||||
### 9.4.1 同一网络内的容器
|
||||
|
||||
同一自定义网络内的容器可以直接通过容器名通信,这是推荐的容器互联方式:
|
||||
|
||||
@@ -21,7 +21,7 @@ $ docker run -d --name app --network app-net myapp
|
||||
...
|
||||
```
|
||||
|
||||
### 9.5.2 连接到多个网络
|
||||
### 9.4.2 连接到多个网络
|
||||
|
||||
一个容器可以同时连接到多个网络,这对于需要跨网络通信的中间件容器特别有用:
|
||||
|
||||
@@ -39,7 +39,7 @@ $ docker network connect backend multi-net-container
|
||||
$ docker inspect multi-net-container --format '{{json .NetworkSettings.Networks}}'
|
||||
```
|
||||
|
||||
### 9.5.3 ⚠️ --link 已废弃
|
||||
### 9.4.3 ⚠️ --link 已废弃
|
||||
|
||||
`--link` 是 Docker 早期用于容器互联的方式,**已经被废弃**,不建议在新项目中使用。请使用自定义网络替代:
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
容器运行在自己的隔离网络环境中 (通常是 Bridge 模式)。为了让外部网络访问容器内的服务,我们需要将容器的端口映射到宿主机的端口。
|
||||
|
||||
### 9.6.1 为什么要映射端口
|
||||
### 9.5.1 为什么要映射端口
|
||||
|
||||
容器的网络访问规则如下:
|
||||
|
||||
@@ -21,7 +21,7 @@ flowchart TD
|
||||
|
||||
---
|
||||
|
||||
### 9.6.2 端口映射方式
|
||||
### 9.5.2 端口映射方式
|
||||
|
||||
Docker 提供了多种方式来指定端口映射。
|
||||
|
||||
@@ -66,7 +66,7 @@ abc123456 0.0.0.0:49153->80/tcp
|
||||
|
||||
---
|
||||
|
||||
### 9.6.3 查看端口映射
|
||||
### 9.5.3 查看端口映射
|
||||
|
||||
可以使用以下命令查看容器的端口映射:
|
||||
|
||||
@@ -92,7 +92,7 @@ abc123456 nginx 0.0.0.0:8080->80/tcp web
|
||||
|
||||
---
|
||||
|
||||
### 9.6.4 最佳实践与安全
|
||||
### 9.5.4 最佳实践与安全
|
||||
|
||||
在配置端口映射时,需要注意以下安全事项:
|
||||
|
||||
@@ -127,7 +127,7 @@ $ docker run -d -p 53:53/udp dns-server
|
||||
|
||||
---
|
||||
|
||||
### 9.6.5 实现原理
|
||||
### 9.5.5 实现原理
|
||||
|
||||
Docker 使用 `docker-proxy` 进程 (用户态) 或 `iptables` DNAT 规则 (内核态) 来实现端口转发。
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
Docker 网络提供了天然的隔离能力,不同网络之间的容器默认无法通信。这是 Docker 网络安全的重要基础。
|
||||
|
||||
### 9.7.1 网络隔离原理
|
||||
### 9.6.1 网络隔离原理
|
||||
|
||||
不同网络之间默认隔离,容器只能与同一网络中的容器直接通信:
|
||||
|
||||
@@ -26,7 +26,7 @@ $ docker exec web ping db
|
||||
ping: db: Name or service not known
|
||||
```
|
||||
|
||||
### 9.7.2 安全优势
|
||||
### 9.6.2 安全优势
|
||||
|
||||
这种隔离机制带来以下安全优势:
|
||||
|
||||
@@ -37,7 +37,7 @@ ping: db: Name or service not known
|
||||
| **多租户** | 不同租户的容器在不同网络中完全隔离 |
|
||||
| **最小权限** | 容器只能访问必要的网络资源 |
|
||||
|
||||
### 9.7.3 跨网络通信
|
||||
### 9.6.3 跨网络通信
|
||||
|
||||
如果确实需要某个容器跨网络通信,可以将其同时连接到多个网络:
|
||||
|
||||
@@ -52,7 +52,7 @@ $ docker network connect backend api
|
||||
|
||||
这种方式让你可以精确控制哪些容器可以跨网络通信,遵循最小权限原则。
|
||||
|
||||
### 9.7.4 典型网络架构
|
||||
### 9.6.4 典型网络架构
|
||||
|
||||
一个典型的多层应用网络架构如下:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user