除了使用环境变量之外,还有哪些方法可以从在该主机上运行的容器中获取 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 主机上将有许多其他 bar 容器也创建自己的 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。
原文由 David Xia 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以将主机名作为环境变量传入。你也可以挂载/etc,这样你就可以cat /etc/hostname。但我同意 Vitaly 的观点,这不是容器 IMO 的预期用例。