docker swarm入口副本模式=主机

时间:2019-11-13 17:28:05

标签: docker docker-compose docker-swarm

我在使用docker swarm时遇到问题,我有一个作为反向代理工作的nginx堆栈,并且基于显示不同网站的域。该堆栈具有2个副本,而所有其他堆栈(php / nginx)仅有1个副本。我发现的问题是我无法从这些堆栈中的任何一个获取客户端ip,记录入口堆栈时我只会得到10.xx.xx.xx而不是正确的ip。

实际上,入口的docker-compose就像这样:

    ports:
      - 80:80
      - 443:443
    deploy:
      replicas: 2
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: any

仅当执行以下操作时,我才能获得正确的IP:

    ports:
      - target: 443
        published: 443
        mode: host
        protocol: tcp
      - target: 80
        published: 80
        mode: host
        protocol: tcp
    deploy:
      replicas: 2
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: any

,但是这种情况下的问题是该副本无法正常工作,因为我只有1个副本,第二个抛出此错误: no suitable node (host-mode port already in use on 1 node)

有什么建议吗?

0 个答案:

没有答案