docker bridge网络仅支持单机通信,跨主机需借助swarm overlay或kubernetes cni等方案;自定义bridge+服务发现适用于轻量部署,swarm overlay提供内置dns和vxlan直连,k8s cni实现pod扁平化网络与networkpolicy。

Docker Bridge 网络本身不支持跨主机通信,它只是单机内的虚拟局域网(LAN),所有容器都连接到宿主机上的同一个 docker0 网桥或自定义 bridge 网络,天然无法构成真正的“分布式系统”网络。所谓“Docker Bridge 网络分布式系统”,实际是指:在多台物理/虚拟机上部署容器,并让它们像一个逻辑网络那样互通——这必须借助额外的网络方案,不能只靠原生 bridge。
下面分三类场景说明怎么配,聚焦实用、可落地的路径:
用自定义 bridge + 外部服务发现(适合轻量级多机部署)
适用于小规模集群(比如 2–5 台服务器)、无复杂服务治理需求的场景。核心思路是:
- 每台机器维持独立的自定义 bridge 网络(如
app-net) - 容器对外暴露端口(
-p或ports:),由外部负载均衡器(如 Nginx、HAProxy)或 DNS 轮询调度请求 - 服务间调用通过 宿主机 IP + 映射端口,而非容器名
例如:
- Server A 运行
web容器,映射8080:80 - Server B 运行
api容器,映射9000:3000 -
web通过http://192.168.1.102:9000调用api(假设 B 的 IP 是 192.168.1.102)
⚠️ 注意:
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
- 容器名解析(如
curl api:3000)在此模式下无效,因为跨机无 DNS 同步 - 需手动维护 IP 列表或配合 Consul/Etcd 做服务注册与健康检查
用 Docker Swarm overlay 网络(官方推荐的分布式 bridge 方案)
Swarm 内置的 overlay 网络才是 Docker 对“分布式 bridge”的标准解法。它底层基于 VXLAN 封装,自动打通多节点容器网络,支持:
- 跨主机容器直连(
ping web、curl db:3306) - 内置 DNS 负载均衡(同一服务多个副本,DNS 自动轮询)
- 加密传输(启用
--opt encrypted)
配置步骤简明:
- 在 manager 节点初始化集群:
docker swarm init --advertise-addr - worker 节点加入:
docker swarm join --token xxx <manager-ip>:2377</manager-ip> - 创建 overlay 网络:
docker network create -d overlay --attachable my-overlay - 部署服务并指定网络:
docker service create --name web --network my-overlay -p 80:80 nginx docker service create --name db --network my-overlay -e MYSQL_ROOT_PASSWORD=123 mysql:8.0
- 同一 overlay 网络下的服务,可直接用服务名通信(
web能ping db)
✅ 优势:零第三方依赖、命令式管理、和 Docker CLI 深度集成
❌ 局限:仅适用于 Swarm 模式,不兼容纯 docker run;大规模集群需注意性能与加密开销
用 Kubernetes + CNI 插件(生产级分布式网络事实标准)
K8s 不使用 Docker 内置网络,而是通过 CNI(Container Network Interface)插件提供统一网络平面。主流 CNI 如 Calico、Flannel、Cilium 均支持:
- Pod IP 全局扁平化(跨节点互通,无需 NAT)
- NetworkPolicy 精细控制流量
- 服务发现基于 DNS(
db.default.svc.cluster.local) - 自动分配 IP、处理 ARP、路由同步
典型做法:
- 部署 K8s 集群(如用 kubeadm 或托管服务)
- 安装 CNI 插件(例如
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml) - 用 Deployment + Service 编排应用:
apiVersion: v1 kind: Service metadata: name: db spec: selector: app: db ports: - port: 3306 --- apiVersion: apps/v1 kind: Deployment metadata: name: db spec: selector: matchLabels: app: db template: metadata: labels: app: db spec: containers: - name: mysql image: mysql:8.0 env: - name: MYSQL_ROOT_PASSWORD value: "123" -
webPod 中直接mysql -h db即可连接
✅ 优势:生态成熟、弹性强、可观测性好、适配云原生体系
❌ 局限:学习成本高、运维复杂度上升,小团队慎选
关键提醒:不要试图把 docker0 或自定义 bridge 网络直接“拉通”多台机器——那需要手动配置 VXLAN、BGP、ARP 代理等,极易出错且失去 Docker 网络抽象价值。真正要分布式,就该切换到 Swarm 或 Kubernetes 这类编排层,让网络成为平台能力,而非手动拼接。










