Bridge网络本身不支持跨主机通信,但可通过手动配置静态路由打通多宿主机容器网络:需为各宿主机分配不同子网的自定义bridge网络(如172.18.0.0/16和172.19.0.0/16),在宿主机A添加路由“ip route add 172.19.0.0/16 via 宿主机B物理IP”,宿主机B添加反向路由,并开启ip_forward及对应iptables转发规则。

Bridge 网络本身不支持跨主机通信,但通过手动配置静态路由,可以在多台宿主机之间打通容器网络路径,让不同机器上的容器像在同一个局域网里那样直接互通。关键不是改 Docker 默认 bridge,而是补上宿主机层面的路由能力。
静态路由解决的是“知道往哪发”问题
默认情况下,宿主机只知道本机 docker0 网桥(比如 172.17.0.0/16)的流量该走哪里,对其他宿主机上容器所在的子网(比如 172.18.0.0/16)完全没概念。加一条静态路由,就是告诉本机:“凡是发往 172.18.0.0/16 的包,请转发给对方宿主机的 IP”。
先确认各宿主机上容器所在子网
比如宿主机 A 上自定义 bridge 网络net-a子网是172.18.0.0/16,网关是172.18.0.1;宿主机 B 的net-b是172.19.0.0/16,网关172.19.0.1
用docker network inspect net-a查看实际子网和网关-
在宿主机 A 上添加指向宿主机 B 容器子网的路由
ip route add 172.19.0.0/16 via <宿主机B的IP> dev eth0
其中
<宿主机B的IP>是宿主机 B 的物理网卡地址(如 192.168.1.102),eth0是 A 与 B 通信所用的网卡名 -
同样,在宿主机 B 上添加反向路由
ip route add 172.18.0.0/16 via <宿主机A的IP> dev eth0
-
开启宿主机 IP 转发并放行 iptables 转发规则
Skill Weave Chains — 技能链路由引擎下载开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -I FORWARD -i docker0 -o eth0 -j ACCEPT iptables -I FORWARD -i eth0 -o docker0 -m state --state RELATED,ESTABLISHED -j ACCEPT
否则包会被内核丢弃
必须配合自定义 bridge 网络使用
默认 bridge 网络(docker0)子网固定为 172.17.0.0/16,所有宿主机都用这个网段会造成 IP 冲突。所以每台宿主机应创建不同子网的自定义 bridge:
docker network create --driver bridge --subnet=172.18.0.0/16 net-a docker network create --driver bridge --subnet=172.19.0.0/16 net-b
再把容器分别连到对应网络,并指定固定 IP(可选但推荐),避免每次重启变动。
验证是否生效
从宿主机 A 上进某个容器,尝试 ping 宿主机 B 上某容器的 IP:
docker exec -it web-a ping 172.19.0.10
如果通了,说明路由已起作用;不通则检查:
- 宿主机间物理网络是否可达(能 ping 通对方 IP)
- 防火墙是否拦截了 ICMP 或转发端口(如
ufw或firewalld) -
ip route show是否正确显示新增路由 -
iptables -L FORWARD -n是否允许相关方向转发
不复杂但容易忽略


















