You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL2单机器搭建多节点Docker Swarm测试环境遇网络问题求助

解决WSL2单机器Docker Swarm跨节点服务DNS连接问题

你在WSL2上用两种方式搭建单机器多节点Docker Swarm(多WSL实例/ Docker-in-Docker容器),但当MongoDB和MongoExpress部署在不同节点时,出现MongoNetworkError: failed to connect to server [mongo:27017] on first connect错误。核心问题不是单纯的DNS解析失败,而是Swarm跨节点的Overlay网络连通性配置不到位,以下是针对性解决方案:


一、针对多WSL实例搭建的Swarm集群

1. 统一使用全局Overlay网络

多WSL实例是独立的Docker守护进程,默认的ingress网络是每个实例本地的,跨实例无法互通。需要手动创建全局Overlay网络并绑定服务:

# 在Swarm管理节点创建可挂载的Overlay网络
docker network create --driver overlay --attachable swarm-shared-net

修改部署用的Compose文件,指定使用这个网络:

services:
  mongo:
    image: mongo
    networks:
      - swarm-shared-net
  mongo-express:
    image: mongo-express
    networks:
      - swarm-shared-net
    environment:
      ME_CONFIG_MONGODB_SERVER: mongo
networks:
  swarm-shared-net:
    external: true

2. 确保WSL实例间网络互通

  • 检查每个WSL实例的IP,确认彼此能ping通:
    hostname -I
    
  • 关闭WSL实例内的防火墙(或开放Swarm必需端口):
    # 测试环境直接关闭防火墙
    sudo ufw disable
    
    # 或者精准开放端口
    sudo ufw allow 2377/tcp
    sudo ufw allow 7946/tcp
    sudo ufw allow 7946/udp
    sudo ufw allow 4789/udp
    

二、针对Docker-in-Docker(DinD)搭建的Swarm集群

1. 让DinD容器接入Swarm共享网络

启动DinD容器时,直接加入宿主机提前创建的Swarm Overlay网络,避免DinD本地网络隔离:

# 先在宿主机创建共享网络
docker network create --driver overlay --attachable swarm-shared-net

# 修改DinD启动命令,加入共享网络
docker run -d --privileged --name worker-1 --hostname=worker-1 --network swarm-shared-net docker:${DOCKER_VERSION}

2. 测试环境可选:禁用DinD网络隔离

如果不需要DinD的网络隔离性,用--net=host启动容器,让DinD内的Docker直接使用宿主机网络,彻底解决跨节点连通问题:

docker run -d --privileged --name worker-1 --hostname=worker-1 --net=host docker:${DOCKER_VERSION}

三、通用排查验证步骤

  • 检查节点连通性:在管理节点执行,确认节点IP可达
    docker node inspect <节点ID> --format '{{.Status.Addr}}'
    ping <节点IP>
    
  • 验证服务网络配置:查看服务的虚拟IP信息
    docker service inspect <服务名> --format '{{.Endpoint.VirtualIPs}}'
    
  • 测试DNS解析:在MongoExpress容器内执行,确认能解析mongo
    docker exec -it <MongoExpress容器ID> nslookup mongo
    

内容的提问来源于stack exchange,提问作者Junsong Du

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:50:27