无法通过主机上已发布的端口访问Docker Swarm服务

问题描述 投票:4回答:1

我已经在多台机器上部署了Docker Swarm集群,现在我正尝试从主机访问Docker中运行的服务器。

我使用docker compose文件定义我的服务,并且在检查服务时显示了公开的端口:

"Endpoint": {
        "Spec": {
            "Mode": "vip",
            "Ports": [
                {
                    "Protocol": "tcp",
                    "TargetPort": 27017,
                    "PublishedPort": 3017,
                    "PublishMode": "host"
                }
            ]
        },
        "Ports": [
            {
                "Protocol": "tcp",
                "TargetPort": 27017,
                "PublishedPort": 3017,
                "PublishMode": "host"
            }
        ],
        "VirtualIPs": [
            {
                "NetworkID": "**********",
                "Addr": "10.0.0.34/24"
            }
        ]
    }

我使用主机模式,因为该服务被限制在特定计算机上运行,​​并且我希望只能从此计算机上访问它。

但是当我列出侦听主机上端口的进程时,该端口没有出现。

当然,我不能通过暴露的端口从主机连接到服务器。

我使用iptables作为防火墙,并尽可能限制开放端口,但是Docker Swarm需要的端口已打开。

这是我的docker-compose.yml文件:

version: '3.4'
services:
  mongo-router:
    image: mongo
    networks:
      - mongo-cluster
    volumes:
      - db-data-router:/data/db
      - db-config-router:/data/configdb
    ports:
      - target: 27017
        published: 3017
        protocol: tcp
        mode: host
    deploy:
      placement:
        constraints:
          - node.labels.mongo.router == true
    command: mongos --configdb cnf/mongodb-cnf_mongo-cnf-1:27017,mongodb-cnf_mongo-cnf-2:27017,mongodb-cnf_mongo-cnf-3:27017

volumes:
  db-data-router:
  db-config-router:

networks:
  mongo-cluster:
    external: true

该网络是覆盖所有服务的覆盖网络。

docker port docker-swarm
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.