У меня проблема с 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-адресе?