如何从Docker容器中获取外部主机的IP地址

我们正在从CoreOS转换到CentOS,从舰队到群集。 我需要确定从容器内运行docker的机器的ip地址。

问题是我们使用nginx来确定我们的docker集群中的哪台机器运行哪个服务。 为了使这个工作,我们需要容器能够发布到我们的etcd存储库它所在的机器的IP地址。 到目前为止,我所见过的所有东西都能够让我到外部机器的IP地址172.17.0.1,但是我们所有的docker上的所有容器都有这个私有地址。 我需要一个外部地址,nginx可以用来获得服务。

我可以使用“ – 主机名ip ... ”选项或“-e EXT_HOST_IP = ip ... ”选项来设置一个IP地址,但是如果我在“docker run”命令中包含这些选项, docker命令将扩展'ip …'并返回当前机器的IP地址 – 不是群集最终运行容器的机器。

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

在最近的回答中提到了群集问题1106

在群内我可以像这样得到主机的IP

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

对于很多目的来说这很好。

但是当我谈到这个IP时,我需要使用正确的DNS名称来运行TLS。