从Python程序的Docker容器中获取主机名
问题描述:
根据我的应用程序要求,我需要从python程序获取服务器IP和服务器名称。但是我的应用程序驻留在Ubuntu顶部的特定Docker容器内。从Python程序的Docker容器中获取主机名
我试图像下面
import os
os.system("hostname") # to get the hostname
os.system("hostname -i") # to get the host ip
输出: 2496c9ab2f4a172.*.*.*
但它给主机名称作为它的居住泊坞窗数据筒和host_ip因为它是私有IP地址同上。我需要主机名,因为它是服务器名称。但是当我在终端输入上述命令时,我能够得到我想要的结果。
答
您将无法以这种方式获取主机系统的名称。为了得到它,你可以在你的Dockerfile或运行你的容器(-e选项)时定义一个环境变量。或者,你可以安装你的主机/etc/hostname
文件放入容器中,或将它复制...
这是一个例子运行命令我用它来设置环境变量HOSTNAME对容器内的主机的主机名:
docker run -it -e "HOSTNAME=$(cat /etc/hostname)" <image> <cmd>
在Python中,您可以运行os.environ["HOSTNAME"]
来获取主机名。 至于IP地址去,我用这个命令得到运行的容器检索:
route -n | awk '/UG[ \t]/{print $2}'
您必须安装路由可以使用此命令。它包含在net-tools软件包中。 apt-get install net-tools
感谢您的建议。我试图将主机名添加到环境变量以运行容器。它不接受我的命令。我的命令是__docker运行 -e HOST_HOSTNAME ='主机名'__并且来到IP,我可以使用像__ipgetter.myip()这样的ipgetter模块获得它__ –
你是什么意思,它不接受你的命令? – Anis