Host、Bridge 和 Overlay 是 Docker 三种核心网络模式:Bridge 用于单机内隔离通信,Host 实现零开销直连宿主机网络,Overlay 支持跨主机集群通信;选择需匹配实际通信边界。

Host、Bridge 和 Overlay 是 Docker 中最常用也最关键的三种网络模式,它们解决的是不同层级的通信问题:单机内隔离、单机内互通、跨主机直连。选错模式,轻则服务访问不了,重则引发端口冲突或安全风险。
Bridge 模式:默认隔离,适合大多数 Web 应用
容器启动时不加 --network 参数,就自动进入 Bridge 模式。Docker 在宿主机上创建一个名为 docker0 的虚拟网桥,每个容器获得独立的 net namespace 和私有 IP(如 172.17.0.x),通过 veth pair 连接到该网桥。
- 容器之间可通过 IP 直接通信,但默认不支持通过容器名解析(需自建 user-defined bridge 才启用 DNS)
- 访问外网依赖宿主机 NAT,有轻微性能损耗
- 对外提供服务必须用 -p 8080:80 显式映射端口,否则外部无法访问
- IP 地址随容器重启变化,生产环境建议用 docker network create mynet 创建自定义 bridge 网络,提升稳定性
Host 模式:零开销直连,适合高性能网络组件
容器直接复用宿主机的网络命名空间,不创建独立 net namespace,也不分配私有 IP。它看到的网络接口、路由表、端口列表,和宿主机完全一致。
- 没有 NAT、没有网桥转发,网络延迟最低,吞吐最高
- 容器监听 80 端口,等于宿主机的 80 端口被占用,多个容器不能同时监听同一端口
- 容器内 localhost 就是宿主机 localhost,调试工具(如 curl、tcpdump)可直接使用
- 隔离性最弱,不适合多租户或混合部署场景;仅推荐用于监控代理、反向代理、负载均衡器等对性能极度敏感的服务
Overlay 模式:跨主机通信的基石,面向集群场景
Overlay 不是单机模式,而是为 Docker Swarm 或 Kubernetes 设计的分布式网络方案。它在物理网络之上构建一层逻辑网络,靠 VXLAN 封装实现跨节点通信——数据包从容器发出后,被加上 VXLAN 头,经 UDP 4789 端口发往目标主机,再解封装投递给目标容器。
- 不同主机上的容器能像在同一局域网内一样,用 IP 或服务名直接通信
- 依赖 Swarm 集群初始化(docker swarm init)和 overlay 网络显式创建(docker network create -d overlay mynet)
- 服务发现由 Swarm 内置 DNS 提供,容器可通过服务名互访,无需硬编码 IP
- 不适用于纯单机开发;若只是本地多容器协作,优先考虑自定义 bridge;只有真正需要多机部署时才启用 Overlay
不复杂但容易忽略:网络模式不是“越高级越好”,而是看实际通信边界在哪里——本机隔离选 Bridge,本机性能压榨选 Host,多机协同才轮到 Overlay。


















