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 网络模式