我们正在从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地址。似乎应该有一种更简单的方法来做到这一点。
答案 0 :(得分:0)
Swarm issue 1106在recent answer
中提及在swarm中我可以像这样获得主机的ip
ip route | awk '/default/ { print $3 }'
对于许多目的来说这很好。
但是当我与该IP通信时,我需要使用适当的DNS名称来使用TLS。