【问题标题】:Docker swarm service port not exposedDocker swarm 服务端口未暴露
【发布时间】:2019-06-04 21:39:54
【问题描述】:

我无法连接到在 docker swarm 上运行的服务。 swarm 似乎没问题,因为我可以连接到它上面运行的其他容器。我用docker stack deploy -c docker-compose.yaml nifi 运行服务,docker compose 文件是:

version: "3.3"
services:
  registry:
    image: apache/nifi-registry:0.3.0
    ports:
      - "18080:18080"
  deploy:
    replicas: 1
    restart_policy:
      condition: on-failure

当我在没有 swarm 的情况下运行它时,即 docker-compose -f docker-compose.yaml up 它工作正常,我可以浏览到它。当我使用docker stack deploy -c docker-compose.yaml nifi 运行它时,我看到了相同的服务日志条目,但无法浏览到它。

$ docker version

Client:
  Version:      18.03.1-ce
  API version:  1.37
  Go version:   go1.9.5
  Git commit:   9ee9f40
  Built:        Wed Jun 20 21:43:51 2018
  OS/Arch:      linux/amd64
  Experimental: false
  Orchestrator: swarm

Server:
  Engine:
    Version:      18.03.1-ce
    API version:  1.37 (minimum version 1.12)
    Go version:   go1.9.5
    Git commit:   9ee9f40
    Built:        Wed Jun 20 21:42:00 2018
    OS/Arch:      linux/amd64
    Experimental: false

有没有人有解决此问题的建议?

【问题讨论】:

  • “浏览”是什么意思呢?你打的是什么ip?在 compose 示例中,这可能是 localhost,在 swarm 示例中,它将是您创建 swarm 的初始地址(假设您正在运行单个管理器节点)。
  • @johnharris85 浏览它是指将浏览器指向 18080 端口上 swarm 中的主机之一。我已经尝试了所有主机,通常任何主机都可以使用 swarm Mesh 网络。

标签: docker docker-compose docker-swarm


【解决方案1】:

成群结队

ports:
  - "18080:18080"

将在所有 swarm 节点上公开端口,如果其他服务使用某些节点上的端口,您可能会遇到问题

您只能在带有容器的主机上公开端口

services:
  registry:
    ports:
      - target: 18080
        published: 18080
        mode: host

【讨论】:

    猜你喜欢
    • 2020-11-13
    • 2019-06-22
    • 2018-09-03
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    相关资源
    最近更新 更多