1. Docker 常见网络模式
Docker 提供了几种主要网络模式,不同模式下容器与容器、容器与宿主机之间的通信行为不一样。

2. 不同模式下通信情况
2.1 Bridge 模式(默认)
容器 → 容器(同一 bridge 网络)
通过内部 IP 或容器名(DNS 解析)直接通信。容器 → 宿主机
可以直接访问宿主机 IP(172.x.x.1或物理网卡 IP)。宿主机 → 容器
需映射端口(-p 8080:80),或宿主机直接访问容器 IP(仅限宿主机本地)。容器 → 外网
通过 NAT 转发出公网。
2.2 Host 模式
容器和宿主机是同一个网络环境
容器直接使用宿主机 IP,监听端口和宿主机冲突。容器 ↔ 容器
没有隔离,直接通过宿主机 IP+端口通信。性能优势:省去了 NAT 转发。
2.3 Container 模式
多个容器共享一个网络栈。
好处:可以让两个容器共享 127.0.0.1 进行本地通信。
缺点:会抢占端口、难做隔离。
2.4 None 模式
完全断网,需要手动配置网络。
场景:安全隔离、只处理本地文件任务。
2.5 Macvlan 模式
容器直接出现在局域网中,有独立 IP 和 MAC 地址。
容器 ↔ 容器(同网段):像物理机一样直接通信。
容器 ↔ 宿主机:需要特殊配置(宿主机默认不能直接访问)。
3. 图解
Bridge 模式
[外网]
↑
[物理网卡] ← NAT → [docker0:172.17.0.1] ←→ [容器A:172.17.0.2]
←→ [容器B:172.17.0.3]
Host 模式
cMacvlan 模式
[交换机/LAN] ←→ [宿主机物理网卡]
↑ ↑
容器A:192.168.1.101 容器B:192.168.1.102
less