Из моего приложения 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 отключена на всех хостах.
Спасибо за вашу помощь!