2. Docker 网络模型总览:五大驱动对比

Docker 的网络模型是容器化架构的基石。理解不同网络驱动的工作方式,是排查容器通信故障的前提。Docker 原生提供五种核心网络驱动:Bridge、Host、None、Overlay 和 Macvlan。每种驱动在隔离性、性能、跨主机通信能力上各有取舍。

2.1 网络驱动核心特性对比

驱动名称 隔离级别 跨主机通信 性能损耗 典型场景
Bridge 容器间隔离,通过 NAT 访问外网 需端口映射或额外路由 低(NAT 转换) 单机开发、测试环境
Host 无隔离,直接使用宿主机网络栈 直接使用宿主机 IP 无 性能敏感型应用(如 Nginx)
None 完全隔离,无网络接口 不支持 无 安全沙箱、离线计算任务
Overlay 容器间隔离,VXLAN 隧道封装 原生支持(Swarm/K8s) 中(封装/解封装) 跨主机容器编排集群
Macvlan 容器拥有独立 MAC 地址 直接暴露于物理网络 极低 遗留应用迁移、网络监控
选型建议: 单机开发首选 Bridge;生产集群必须用 Overlay;追求极致性能且安全要求低时用 Host;需要容器像物理机一样接入网络时用 Macvlan。

2.2 五大驱动工作机制详解

2.2.1 Bridge 驱动

Docker 默认驱动。在宿主机上创建一个虚拟网桥 docker0,容器通过 veth pair 连接到该网桥。容器间可直接通信,访问外网需通过 iptables NAT 转换。

  • IP 分配: 默认子网 172.17.0.0/16,容器自动获取 IP。
  • 端口映射: -p 8080:80 将宿主机端口映射到容器端口。
  • 故障点: iptables 规则冲突、网桥转发未开启。

2.2.2 Host 驱动

容器直接使用宿主机网络命名空间,不进行网络隔离。容器内端口直接监听在宿主机 IP 上。

  • 优势: 零网络损耗,适合高吞吐场景。
  • 风险: 端口冲突、安全隔离缺失。
  • 使用方式: docker run --network host。

2.2.3 None 驱动

容器创建时不分配任何网络接口,只有 loopback 设备。适用于完全不需要网络访问的离线任务。

  • 典型用途: 批处理作业、安全审计容器。
  • 扩展: 可后续手动添加自定义网络接口。

2.2.4 Overlay 驱动

基于 VXLAN 技术,在跨主机容器间建立二层网络。Docker Swarm 和 Kubernetes 均依赖此驱动实现服务发现与通信。

  • 数据平面: 使用 VXLAN 封装,UDP 端口 4789。
  • 控制平面: 依赖分布式键值存储(如 etcd、consul)。
  • 性能: 相比 Host 驱动有 5%-15% 的吞吐损耗。

2.2.5 Macvlan 驱动

为每个容器分配一个物理网络中的 MAC 地址,使容器看起来像直接连接到物理交换机。容器可直接使用宿主机所在子网的 IP。

  • 模式: Bridge 模式(默认)、802.1q trunk 模式。
  • 限制: 宿主机网卡需支持混杂模式;部分云环境不支持。
  • 适用: 需要容器直接暴露于现有网络架构的场景。

2.3 网络驱动选择决策流程

Docker 网络驱动选择决策树 是否需要网络? None 驱动 跨主机通信? Overlay 驱动 性能优先? Host 驱动 直接暴露物理网络? Macvlan 驱动 Bridge 驱动 说明:决策路径基于隔离性、性能、跨主机需求三个维度,实际选型需结合安全策略和基础设施限制。

2.4 常见故障场景与排查要点

故障场景 1:Bridge 模式下容器无法访问外网
检查步骤:
1. 确认宿主机 IP 转发已开启:sysctl net.ipv4.ip_forward 应返回 1。
2. 检查 iptables NAT 规则:iptables -t nat -L -n 查看 MASQUERADE 规则是否存在。
3. 验证 DNS 配置:cat /etc/resolv.conf 确认 nameserver 可达。
故障场景 2:Overlay 网络跨主机容器无法通信
排查要点:
- 确认所有节点已加入同一 Swarm 集群或 K8s 集群。
- 检查 VXLAN 端口(UDP 4789)是否被防火墙阻断。
- 验证分布式键值存储(etcd/consul)健康状态。
- 使用 docker network inspect 查看 Overlay 网络端点列表。

2.5 网络驱动性能基准参考

驱动 TCP 吞吐量(Gbps) 延迟(μs) CPU 额外开销
Host 9.4 12 0%
Macvlan 9.2 14 1%
Bridge 8.8 18 3%
Overlay 7.5 35 8%
None N/A N/A 0%

* 测试环境:10GbE 网络,MTU 1500,单流 iperf3 测试。实际性能受硬件、内核版本、网络拓扑影响。