Хост доступа к Docker-контейнерам по DNS-имени - PullRequest
0 голосов
/ 17 января 2019

Из моего приложения Spring Boot, развернутого в виде Docker-контейнера, мне нужно иметь возможность доступа к родительскому узлу (в Swarm) по какому-то DNS-имени, выставленному докером, чтобы я мог добавить его в файл конфигурации, и мне было интересно было ли DNS-имя, автоматически выставленное Docker для этой цели?

В другом контейнере, запланированном на том же хосте, работающем в "network_mode: host", запущен Consul и реклама на порту 8500 (реальный IP-адрес 192.168.1.233).

Если я запускаю netstat на узле Swarm (ip 192.168.1.233), я вижу, что он прослушивает порт 8500:

# netstat -anp | grep 8500

tcp6       0      0 :::8500                 :::*                    LISTEN      25010/docker-proxy

Я хочу иметь возможность определить строку подключения в качестве конфигурации в приложении Spring Boot на узле swarm к локальному экземпляру Consul, запланированному на том же физическом хосте, что и приложение Spring Boot.

Если я ссылаюсь на «localhost» в контейнере Spring Boot, то на порте 8500 ничего не прослушивается, что подтверждается выполнением этого после обработки в контейнере Spring Boot (с помощью примера вызова Consul API)

# wget http://localhost:8500/v1/status/leader

Connecting to localhost:8500 (127.0.0.1:8500)
wget: can't connect to remote host (127.0.0.1): Connection refused

Я также пытался использовать "host.docker.internal", но это не работает:

# ping host.docker.internal

ping: bad address 'host.docker.internal'

Все хосты - это хосты Centos 7 и Docker версии 18.09.1, сборка 4c52b90.

Служба firewalld отключена на всех хостах.

Спасибо за вашу помощь!

...