Не удается получить доступ к службе Docker Swarm через опубликованный порт на хосте - PullRequest
0 голосов
/ 24 мая 2018

Я развернул кластер 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

Сеть является оверлейной сетью, на которую подписываются все службы.

...