Docker Swarm Windows工人与Traefik返回网关超时

目的是获得运行Linux操作系统的混合操作系统Docker群集以及运行Docker For Windows的Windows 10计算机

目前Windows工作者在理论上支持混合os群,只要–endpoint-mode标志设置为“dnsrr”。 这在这里解释。 然而,尝试使用traefik路由到一个简单的dockerwhoami图像stefanscherer / whoami图像失败。

最小失败的例子

// On (Linux) Manager Node: docker swarm init --advertise-addr <hostaddress> --listen-addr <hostaddress>:2377 // On (Windows 10) Worker Node: docker swarm join <jointoken> // On Manager Node: docker network create --driver=overlay traefik-net docker service create \ --name traefik \ --constraint=node.role==manager \ --publish 80:80 --publish 8080:8080 \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --network traefik-net \ traefik \ --docker \ --docker.swarmmode \ --docker.domain=traefik \ --docker.watch \ --web docker service create \ --name whoami \ --label traefik.enable=true \ --label traefik.frontend.rule=Host:whoami.docker \ --label traefik.protocol=http \ --label traefik.docker.network=traefik-net \ --label traefik.backend.loadbalancer.method=drr \ --label traefik.backend=whoami \ --network traefik-net \ --mode global\ --label traefik.port=80 \ stefanscherer/whoami 

Traefik成功设置后端规则,检查我使用traefik仪表板的路由,找出规则路由到的URL,例如'10.0.0.12:8080'。 然后,我将它与每个任务的IP地址进行比较,可以使用docker service ps查看任务,并查找其使用的地址

 docker inspect <taskID> \ --format '{{ range .NetworksAttachments }}{{ .Addresses }}{{ end }}' 

问题

发送到pipe理器IP的标头“主机:whoami.docker”的HTTP请求在路由到pipe理器时将成功,并在路由到Windows工作器上的Windows任务时发生504网关超时。