Docker 网络模式
1. Bridge 模式(默认)
-
工作原理:
创建虚拟网桥docker0,容器通过veth pair设备连接到网桥,分配私有 IP(如172.17.0.0/16),通过 NAT 与外部通信148。 -
特点:
-
隔离性:容器间网络隔离,需端口映射(
-p)暴露服务16。 -
性能:中等,存在 NAT 开销3。
-
-
适用场景:单机环境下的容器互通(如本地开发、小型应用)26。
-
示例命令:
docker run -d --network bridge -p 8080:80 nginx
🖥️ 2. Host 模式
-
工作原理:
容器共享宿主机的网络命名空间,直接使用宿主机 IP 和端口,无独立网络栈178。 -
特点:
-
隔离性:无网络隔离,容器端口与宿主机冲突风险高16。
-
性能:最优,无 NAT 或网桥开销37。
-
-
适用场景:高性能需求(如高频日志处理、网络密集型应用)27。
-
示例命令:
docker run -d --network host nginx
🔒 3. None 模式
-
工作原理:
容器仅有lo回环接口,无外部网络连接,需手动配置网络168。 -
特点:
-
隔离性:完全网络隔离,安全性最高15。
-
性能:不涉及外部通信3。
-
-
适用场景:离线任务、高度安全环境或自定义网络配置57。
-
示例命令:
docker run -d --network none alpine
🔗 4. Container 模式
-
工作原理:
新容器共享指定容器的网络命名空间(IP、端口等),文件系统与进程仍隔离167。 -
特点:
-
隔离性:网络共享,其他资源隔离1。
-
性能:高效,容器间通过
lo直接通信7。
-
-
适用场景:紧密耦合的容器组(如 Kubernetes Pod)16。
-
示例命令:
docker run -d --name web nginx docker run -d --network container:web busybox
🌐 5. Overlay 模式
-
工作原理:
跨主机创建虚拟网络,通过 VXLAN 封装数据包,实现容器跨节点通信235。 -
特点:
-
隔离性:多主机间容器网络隔离3。
-
性能:中等,依赖封装和解封装3。
-
-
适用场景:分布式系统、Swarm/Kubernetes 集群25。
-
示例命令:
docker network create -d overlay my-overlay docker service create --network my-overlay nginx
📡 6. Macvlan 模式
-
工作原理:
为容器分配独立 MAC 地址,使其直接接入物理网络,像普通物理设备一样通信235。 -
特点:
-
隔离性:容器与物理网络融合,支持 VLAN 划分35。
-
性能:接近物理网络,无额外转发3。
-
-
适用场景:容器需直接暴露于物理网络(如 IoT 设备模拟、传统网络迁移)25。
-
示例命令:
docker network create -d macvlan --subnet=192.168.1.0/24 -o parent=eth0 my-macvlan docker run -d --network my-macvlan nginx
💎 核心区别总结
| 模式 | 网络隔离 | 性能 | 配置复杂度 | 典型场景 |
|---|---|---|---|---|
| Bridge | 中等(NAT 隔离) | ⭐⭐ | 低 | 单机容器互通 |
| Host | 无 | ⭐⭐⭐⭐ | 低 | 高性能网络应用 |
| None | 完全隔离 | - | 高(需手动) | 安全隔离/离线任务 |
| Container | 共享网络栈 | ⭐⭐⭐ | 中 | 容器组(如 Pod) |
| Overlay | 跨主机隔离 | ⭐⭐ | 高 | 集群/跨主机通信 |
| Macvlan | 物理网络融合 | ⭐⭐⭐⭐ | 中 | 容器直接接入物理网络 |
💡 选择建议:
单机开发 → Bridge
性能敏感 → Host
跨主机集群 → Overlay
传统网络集成 → Macvlan
可通过 docker network ls 查看现有网络,docker network inspect <NETWORK> 获取详情35。具体实践案例可参考各模式的示例命令及来源文档。

浙公网安备 33010602011771号