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

时间:2016-06-22 19:50:03

标签: nginx docker docker-swarm

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

问题在于我们使用nginx来确定docker集群中的哪台机器运行哪些服务。为了完成这项工作,我们需要容器能够向我们的etcd存储库发送它所在的机器的IP地址。到目前为止我看到的所有内容都能够让我获得外部机器的172.17.0.1 ip地址,但我们所有码头工人的所有容器都将拥有该私人地址。我需要一个外部地址,nginx可以使用该地址来获取服务。

我可以使用' - 主机名ip ...'选项或' -e EXT_HOST_IP = ip ...'设置IP地址的选项,但如果我将这些包含在“#docker run'命令,shell处理docker命令会扩展' ip ...'并返回当前机器的IP地址 - 而不是swarm最终运行容器的机器。

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

1 个答案:

答案 0 :(得分:0)

Swarm issue 1106recent answer

中提及
  

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

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

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

     

但是当我与该IP通信时,我需要使用适当的DNS名称来使用TLS。