Невозможно открыть порт контейнера, подключенного к оверлейной сети, для частного IP-адреса - PullRequest
0 голосов
/ 16 июня 2020

У меня проблема с docker роем. Я опубликовал порт контейнера, подключенного к оверлейной сети моего роя, но этот порт доступен только изнутри каждого хоста моего роя. Фактически, я не могу получить доступ к порту из-за пределов роя

У меня 4 машины:

  • хост 1: 10.0.0.5 член роя
  • хост 2: 10.0.0.6 член роя
  • хост 3: 10.0.0.7 член роя
  • хост 4: 10.0.0.1 не член роя

и один контейнер: - контейнер хранилища, открывающий TCP-порт 4200; Ниже части конфигурации файла docker -compose

vault:
image: vault:1.3.2
ports:
  - "8200"
environment:
  VAULT_API_ADDR: http://vault:8200
  VAULT_ADDR: http://127.0.0.1:8200
  VAULT_LOCAL_CONFIG: >-
    {
      "disable_mlock":true,
      "ui": true,
      "backend": {
        "file": {
          "path": "/vault/file"
        }
      },
      "listener": {
        "tcp": {
          "address": "0.0.0.0:8200",
          "tls_disable": 1
        },
      },
      "default_lease_ttl": "168h",
      "max_lease_ttl": "720h"
    }

Когда я запускаю свой стек, docker создает мой контейнер и связанную с ним оверлейную сеть.

Результат команды docker службы стека возвращают

    ace3iansible@alaska:~$ docker stack services test
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
rhjg9jc0guyy        test_vault          replicated          1/1                 vault:1.4.2         *:30000->8200/tcp

Когда я запускаю te lnet 127.0.0.1 30000 на host1, host2 и host3, он возвращает успешный ответ, но у меня есть тайм-аут, когда я запускаю te lnet 10.0.0.5 30000 с host4.

Я прочитал документацию docker, и мне кажется, что мой рой будет открывать порт только на IP-адресе publi c. Есть ли способ разрешить доступ к порту моего контейнера на частном IP-адресе?

...