6月3日 00:04

Docker 网络模式有哪些?bridge、host 和 overlay 怎么选?

Docker 有四种网络模式:bridge(默认)、host、none、overlay。日常开发用 bridge,性能敏感用 host,集群通信用 overlay。

bridge:默认模式

每个容器有独立网络栈,通过虚拟网桥(docker0)和宿主机通信。容器之间用服务名互访(同网络内),外部通过端口映射访问容器。

bridge 模式的端口映射(-p 8080:80)有一层 NAT 转换,理论上比 host 慢一点,但隔离性好。

自定义网络让容器间可以通过服务名通信:

host:直接用宿主机网络

容器不隔离网络,直接用宿主机的网络栈。没有 NAT、没有端口映射,性能最好。

host 模式的限制:

  • 端口冲突——多个容器不能监听同一个端口
  • 没有网络隔离——容器能看到宿主机所有网络接口
  • macOS/Windows 上不支持 host 模式(只有 Linux 支持)

适合:网络密集型应用(代理、负载均衡)、需要极低延迟的场景。

none:无网络

容器没有网络接口,只有 loopback。适合纯计算任务(批处理、数据处理),不需要网络的场景。

overlay:跨主机网络

Docker Swarm 模式下,overlay 网络让不同主机上的容器互相通信:

Kubernetes 有自己的网络方案(Flannel、Calico),不用 Docker overlay。

怎么选

  • 开发/通用场景:bridge + 自定义网络
  • 性能优先(Linux):host
  • 纯计算/安全隔离:none
  • Swarm 集群:overlay
  • 生产环境:K8s 管网络,不需要选 Docker 网络模式
标签:Docker