除了使用环境变量之外,还有什么方法可以从在该主机上运行的容器内部获取Docker主机的主机名? 我知道我可以在创建容器时将主机名作为环境变量传递给容器。 我想知道如何在运行时查找它。
foo.example.com (docker host) bar (docker container)
有没有办法bar在Docker主机中运行的容器foo.example.com获取“ foo.example.com”?
bar
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。
您可以将主机名作为环境变量传入。您还可以挂载/ etc,以便可以使用/ etc / hostname。但是我同意Vitaly,这不是IMO容器的预期用例。