在Windows Server 2016上使用traefik联网docker swarm服务时遇到问题。 我已经尝试了所有可以想到的方法,最终使docker-compose与nat网络一起工作,但是我计划通过swarm服务启动更多应用程序,并且似乎无法将traefik和服务与docker-compose连接网络。
感谢您的帮助
我尝试创建一个新的覆盖网络。在没有默认为nat的网络的情况下连接服务(因为我可以检查nat并查看已连接的服务),但仍然无法像使用docker-compose一样访问应用程序。
当我运行docker ps
时,这是输出。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e9bb15daf909 stefanscherer/traefik-windows:latest "/traefik --configfi…" 13 seconds ago Up 8 seconds 80/tcp traefik-test.ya54gf7ggrwpxk7hb2apyt87u.9t7n20hy2xyq80dtovp280u8t
26eccf39f07e stefanscherer/whoami "\\http.exe" 23 seconds ago Up 18 seconds 8080/tcp traefik_whoami_1
ed95b99fae35 stefanscherer/traefik-windows "/traefik --configfi…" 23 seconds ago Up 17 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:8080->8080/tcp traefik_proxy_1
如您所见,两个traefik进程的端口是不同的。
下面是有效的docker-compose和非有效服务命令。
docker-compose.yaml
services:
proxy:
image: stefanscherer/traefik-windows
command: --api --docker --logLevel=WARN --docker.endpoint=tcp://XXX.XX.XXX.X:2375
networks:
- default
ports:
- "80:80"
- "8080:8080"
volumes:
- E:/docker/traefik:C:/etc/traefik
whoami:
image: stefanscherer/whoami
labels:
- "traefik.enable=true"
- "traefik.backend=whoami"
- "traefik.frontend.rule=PathStrip: /whoami/"
networks:
default:
external:
name: nat
个体群体服务
docker service create `
--name whoami `
--label traefik.enable=true `
--label traefik.backend=whoami `
--label traefik.frontend.rule=PathPrefixStrip:/whoami `
--label traefik.port=80 `
stefanscherer/whoami
docker service create `
--name traefik-test `
--mode global `
--constraint=node.role==manager `
--publish 8080:8080 `
--publish 80:80 `
stefanscherer/traefik-windows `
--defaultentrypoints="http" `
--retry `
--debug=true `
--logLevel=DEBUG `
--docker `
--docker.endpoint=tcp://XXX.XX.XXX.X:2375 `
--docker.swarmmode `
--docker.domain=traefik `
--docker.watch `
--docker.exposedbydefault=false `
--web `
--web.statistics
预期结果:
访问http://SERVER:8080/会像打开docker-compose一样打开traefik仪表板。
实际结果:
访问http://SERVER:80或http://SERVER:8080的网页会挂起,并且永远不会加载。