Traefik可以与docker-compose连接,但不能与Windows上的群集服务连接

时间:2019-01-18 00:45:02

标签: docker docker-compose docker-swarm traefik docker-for-windows

在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:80http://SERVER:8080的网页会挂起,并且永远不会加载。

1 个答案:

答案 0 :(得分:0)

我设法使其大量工作。有关详细信息,请参见我的问题here