仅将docker swarm上的端口发布到已连接的网络之一

时间:2019-01-06 17:28:34

标签: docker docker-compose docker-swarm

我正在使用多个节点上的群集来托管某些Web服务。管理器节点将traefik作为代理和ssl端点运行。

这是其中一个虫群堆栈的简化组合文件:

version: '3.2'

services:
  test1:
    networks:
      - internal
    deploy:
      mode: global
      placement:
        constraints: [node.platform.os == linux]

  otherservice:
    image: dummy/other
    ports:
      - 9000
    networks:
      - internal
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == manager]

  loadbalancer:
    image: traefik
    ports:
      - 80:80
      - 443:443
      - 9999:8080
    deploy:
      placement:
        constraints: [node.role == manager]
    networks:
      - internal
      - gateway

networks:
  internal:
    external: true
  gateway:
    external: true

因此,基本上,服务使用的是覆盖类型的网络“内部”。网关是仅在管理器上运行的桥接网络。

问题在于上述配置,在traefik服务上发布的端口已在两个网络上发布。是否有机会仅将这些端口发布到使用的网络之一(在本例中为网关)?

我想避免将这些端口绑定到其他集群节点上,因为在那里我需要它们来填充其他东西。

谢谢!

编辑:向该问题添加一些信息。这是我的一个工作节点上的监听端口的样子

dockerd    2342            root   44u  IPv6 1439543      0t0  TCP *:80 (LISTEN)
dockerd    2342            root   50u  IPv6 1439561      0t0  TCP *:443 (LISTEN)
dockerd    2342            root   52u  IPv6 1439579      0t0  TCP *:9999 (LISTEN)

那些没有运行任何发布端口的容器-因此我怀疑端口是由于负载平衡器服务上的覆盖网络而发布的,即使该服务未在工作节点上运行也是如此。我错了吗?

0 个答案:

没有答案