一尘不染

如何在没有env vars的情况下从该主机上的docker容器内部获取docker主机的主机名

docker

除了使用环境变量之外,还有什么方法可以从在该主机上运行的容器内部获取Docker主机的主机名?
我知道我可以在创建容器时将主机名作为环境变量传递给容器。 我想知道如何在运行时查找它。

foo.example.com (docker host)
  bar (docker container)

有没有办法bar在Docker主机中运行的容器foo.example.com获取“ foo.example.com”?

编辑以添加用例:

容器将创建SRV记录以用于表单的服务发现

_service._proto.name. TTL class SRV priority weight port target.
-----------------------------------------------------------------
_bar._http.example.com 60 IN SRV 5000 5000 20003 foo.example.com.

其中20003是docker主机上动态分配的端口,用于服务监听bar中的某个固定端口(docker处理从主机端口到容器端口的映射)。

我的容器将运行状况检查以确保它已成功创建SRV记录,因为其他Docker主机上还将有许多其他条形容器也创建自己的SRV记录。

_service._proto.name. TTL class SRV priority weight port target.
-----------------------------------------------------------------
_bar._http.example.com 60 IN SRV 5000 5000 20003 foo.example.com. <--
_bar._http.example.com 60 IN SRV 5000 5000 20003 foo2.example.com.
_bar._http.example.com 60 IN SRV 5000 5000 20003 foo3.example.com.

运行状况检查将遍历SRV记录以查找上面的第一个记录,因此需要知道其主机名。

在旁边

我正在使用Helios,发现它为我添加了一个env
var,
从中可以获取主机名。但是我只是好奇如果我在没有Helios的情况下使用docker。


阅读 293

收藏
2020-06-17

共1个答案

一尘不染

您可以将主机名作为环境变量传入。您还可以挂载/ etc,以便可以使用/ etc / hostname。但是我同意Vitaly,这不是IMO容器的预期用例。

2020-06-17