从部署为Docker容器的Spring Boot应用程序中,我需要能够通过某种Docker公开的DNS名称访问Swarm中的父节点,以便我可以将其添加到配置文件中,并且想知道Docker是否为此目的自动公开了DNS名称?
在“ network_mode:host”中运行的同一主机上安排的另一个容器正在运行Consul,并在端口8500(实际IP为192.168.1.233)上发布广告。
如果我在Swarm节点(ip 192.168.1.233)上运行netstat,我可以看到它正在侦听8500端口:
# netstat -anp | grep 8500
tcp6 0 0 :::8500 :::* LISTEN 25010/docker-proxy
我希望能够在群集节点上的Spring Boot应用程序中将连接字符串定义为与Spring Boot应用程序位于同一物理主机上的Consul本地实例的配置。
如果我在Spring Boot容器中引用“本地主机”,那么在侦听Spring Boot容器后(使用示例Consul API调用)运行8500端口就证明没有监听8500端口
# 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服务。
感谢您的帮助!