目标是使用Linux服务器和运行Docker For Windows的Windows 10计算机运行混合OS Docker swarm
目前Windows工作者理论上支持混合操作系统群,前提是--endpoint-mode标志设置为“dnsrr'”。这是here的解释。但是,尝试使用traefik路由到简单的docker whoami图像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的路由,例如&#39; 10.0.0.12:8080&#39 ;.然后,我将其与每项任务的IP地址进行比较,可以使用docker service ps
查看任务,并查看其地址&#39;发现使用
docker inspect <taskID> \
--format '{{ range .NetworksAttachments }}{{ .Addresses }}{{ end }}'
带有标题&#39; Host:whoami.docker&#39;的HTTP请求发送到管理器的IP将在路由到管理器时成功,并在路由到Windows工作服务器上的Windows任务时失败并且504网关超时。
答案 0 :(得分:3)
你错过了设置--endpoint-mode = dnsrr到你的whoami服务。
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 \
--endpoint-mode=dnsrr
stefanscherer/whoami
设置端点模式dnsrr将禁用可能导致问题的VIP地址。
答案 1 :(得分:0)
使用stefanscherer/whoami
图片时,我遇到了同样的问题。尽管使用microsoft/dotnet-samples:aspnetapp
可以工作,所以错误似乎与图像有关。
我正在使用以下设置:
Ubuntu 16.04
Windows 1803