Docker群服务端口未公开

时间:2019-01-10 03:28:36

标签: docker docker-compose docker-swarm

我无法连接到在docker 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

当我运行时没有大群,例如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

有人对这个问题有解决的建议吗?

1 个答案:

答案 0 :(得分:0)

群居

ports:
  - "18080:18080"

将在所有群集节点上公开端口,如果其他服务在某些节点上使用端口,则可能会出现问题

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

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