gpt4 book ai didi

docker - 如何在没有环境变量的情况下从该主机上的 docker 容器中获取 docker 主机的主机名

转载 作者:IT老高 更新时间:2023-10-28 12:35:06 26 4
gpt4 key购买 nike

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

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

有没有办法让容器 bar 在 docker host 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 for me我可以从中获取主机名。但我只是好奇我在没有 Helios 的情况下使用 docker。

最佳答案

您可以轻松地将其作为环境变量传递

docker run .. -e HOST_HOSTNAME=`hostname` ..

使用

-e HOST_HOSTNAME=`hostname`

将调用主机名并将其返回作为名为HOST_HOSTNAME的环境变量,当然您可以根据需要自定义 key 。

请注意,这适用于 bash shell,如果您使用不同的 shell,您可能需要查看“backtick”的替代方案,例如 fish shell 替代方案将是

docker run .. -e HOST_HOSTNAME=(hostname) ..

关于docker - 如何在没有环境变量的情况下从该主机上的 docker 容器中获取 docker 主机的主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29808920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com