Nginx 如何从docker容器中获取外部主机ip地址

Nginx 如何从docker容器中获取外部主机ip地址,nginx,docker,docker-swarm,Nginx,Docker,Docker Swarm,我们正在从CoreOS过渡到CentOS,从舰队过渡到swarm。我需要从容器内部确定运行docker的机器的ip地址 问题是,我们使用nginx来确定docker集群中的哪些机器运行哪个服务。为了实现这一点,我们需要容器能够将其所在机器的ip地址发布到我们的etcd存储库中。到目前为止,我所看到的一切都能够让我找到外部机器的172.17.0.1 ip地址,但我们所有Docker上的所有容器都将具有该私有地址。我需要一个nginx可以用来访问服务的外部地址 我可以使用“-hostname ip…

我们正在从CoreOS过渡到CentOS,从舰队过渡到swarm。我需要从容器内部确定运行docker的机器的ip地址

问题是,我们使用nginx来确定docker集群中的哪些机器运行哪个服务。为了实现这一点,我们需要容器能够将其所在机器的ip地址发布到我们的etcd存储库中。到目前为止,我所看到的一切都能够让我找到外部机器的172.17.0.1 ip地址,但我们所有Docker上的所有容器都将具有该私有地址。我需要一个nginx可以用来访问服务的外部地址

我可以使用“-hostname ip…”选项或“-e EXT_HOST_ip=ip…”选项设置ip地址,但如果我在“docker run”命令中包含这些选项,则处理docker命令的shell将扩展“ip…”并返回当前机器的ip地址,而不是swarm最终运行容器的机器

到目前为止,我想到的最好方法是在主机上创建一个包含主机ip地址的文件/目录。然后,我可以使用docker'-v'选项将目录装载到容器中,并从中获取ip地址。似乎应该有一种更简单的方法来做到这一点。

在一篇文章中提到

在swarm中,我可以像这样获得主机的ip

这在很多方面都很好

但是,当我与该IP通信时,我需要使用正确的dns名称才能使TLS正常工作

ip route | awk '/default/ { print $3 }'