容器集群内部流量自动路由依赖overlay网络与swarm编排:需先初始化swarm集群,再创建overlay网络并部署服务,利用vxlan隧道、内置dns和服务发现实现跨主机通信,无需手动配置路由。

要让容器集群内部流量自动路由,核心不是手动配路由表,而是用 Docker 原生支持的网络抽象层——Overlay 网络配合 Swarm 编排机制。它把服务发现、DNS 解析、跨主机流量转发全部封装好了,无需干预底层 IP 或 route 命令。
使用 Swarm 初始化构建可路由集群
Overlay 网络必须运行在 Swarm 模式下,这是自动路由的前提。单机 Docker 不具备跨节点服务发现和流量调度能力。
- 在任意节点执行
docker swarm init --advertise-addr,生成集群管理端点 - 其他节点用返回的
docker swarm join --token xxx <manager-ip>:2377</manager-ip>加入,形成多主机集群 - 确认状态:运行
docker node ls应显示多个Ready节点
创建 Overlay 网络并绑定服务
Overlay 网络会自动在所有工作节点上部署虚拟网络平面,容器启动时即获得可互通的虚拟 IP,并通过内置 DNS 按服务名解析。
- 执行
docker network create -d overlay app-net,网络名会在整个 Swarm 中生效 - 部署服务时指定该网络:
docker service create --network app-net --name web nginx - 再起一个服务:
docker service create --network app-net --name api python:3.9-slim sleep infinity
此时 web 容器内执行 ping api 可直接通——Docker 内置 DNS 已将服务名映射为虚拟 IP,且流量经 VXLAN 隧道自动路由到实际运行 api 的节点。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
理解自动路由背后的三个关键机制
所谓“自动化”,本质是三套系统协同工作,不需要用户配置静态路由或网关:
-
VXLAN 封装转发:每个 Swarm 节点运行
dockerd的 overlay 驱动,在宿主机间建立 UDP 隧道,容器发往另一节点容器的包会被封装后走物理网络传输 -
内置 DNS 服务发现:所有服务名(如
api)默认注册进集群 DNS,容器内curl http://api:8000会自动解析为当前活跃副本的虚拟 IP -
路由网格(Ingress 网络):当服务暴露端口(
--publish 8080:80),任意节点访问该端口,请求都会被本地ipvs规则转发到实际运行该服务的容器,无论它在哪台机器上
验证与调试常见路径
若服务间调用失败,优先检查这三项,而非查路由表:
- 运行
docker network inspect app-net,确认Services字段列出所有已部署服务 - 进入任一容器:
docker exec -it <container-id> sh</container-id>,执行nslookup api查看是否返回非空 A 记录 - 检查服务任务状态:
docker service ps api,确保有Running状态的任务,且Desired State与Current State一致 - 避免混用
bridge和overlay网络:同一服务不能同时连两种网络,否则 DNS 解析可能失效
不复杂但容易忽略:只要服务在同一个 overlay 网络里,名字能 ping 通,HTTP 调用就自动路由;真正需要人工干预的,通常是防火墙、节点间 UDP 8472 端口不通,或 DNS 缓存延迟。










