通过DNS名称访问Docker容器主机

时间:2019-01-17 20:41:58

标签: spring-boot docker dns docker-swarm consul

从部署为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服务。

感谢您的帮助!

0 个答案:

没有答案