Spring boot 按DNS名称访问Docker容器主机

Spring boot 按DNS名称访问Docker容器主机,spring-boot,docker,dns,docker-swarm,consul,Spring Boot,Docker,Dns,Docker Swarm,Consul,从作为Docker容器部署的Spring Boot应用程序中,我需要能够通过某种Docker公开的DNS名称访问父节点(群中),以便将其添加到配置文件中,我想知道Docker是否为此自动公开了DNS名称 计划在同一台主机上以“网络模式:主机”运行的另一个容器在端口8500上运行Consor和Advertision(实际IP为192.168.1.233) 如果我在Swarm节点(ip 192.168.1.233)上运行netstat,我可以看到它正在侦听端口8500: # netstat -anp

从作为Docker容器部署的Spring Boot应用程序中,我需要能够通过某种Docker公开的DNS名称访问父节点(群中),以便将其添加到配置文件中,我想知道Docker是否为此自动公开了DNS名称

计划在同一台主机上以“网络模式:主机”运行的另一个容器在端口8500上运行Consor和Advertision(实际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
我希望能够在swarm节点上的Spring Boot应用程序中将连接字符串定义为配置,连接到与Spring Boot应用程序调度在同一物理主机上的Consul本地实例

如果我在Spring Boot容器中提到“localhost”,那么8500端口上就没有任何侦听功能,在对Spring Boot容器进行外壳处理后运行该功能(使用示例consu API调用)就证明了这一点

我也尝试过使用“host.docker.internal”,但不起作用:

# ping host.docker.internal

ping: bad address 'host.docker.internal'
这些主机都是Centos 7主机,Docker版本18.09.1,构建4c52b90

所有主机上都禁用了firewalld服务


谢谢你的帮助

关于信息,我已经成功地将主机名传递到docker compose文件服务定义中,如下所示:环境:-SWARM_hostname=“{{.Node.hostname}”,然后使用Spring引导配置属性在Spring引导应用程序中获取并使用它。
# ping host.docker.internal

ping: bad address 'host.docker.internal'