当前位置: 首页 > 面试题库 >

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

宗政卓
2023-03-14
问题内容

除了使用环境变量之外,还有什么方法可以从在该主机上运行的容器内部获取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。


问题答案:

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



 类似资料:
  • 除了使用环境变量之外,还有哪些方法可以从运行在该主机上的容器内部获取docker主机的主机名?我知道我可以在容器创建时将主机名作为环境变量传递给容器。我想知道如何在运行时查找它。 在docker主机中运行的容器是否有方法获得“foo.example.com”? 编辑以添加用例: 容器将为表单的服务发现创建一个SRV记录 其中20003是docker主机上动态分配的端口,用于侦听bar中某个固定端口

  • 问题内容: 如标题所示。我需要能够检索Docker主机的IP地址和从主机到容器的端口映射,并在容器内部进行操作。 问题答案: 正如@MichaelNeale注意到的那样,没有必要使用此方法(除非仅在构建时需要此IP),因为此IP将在构建时进行硬编码。

  • 正如标题所说。我需要能够检索docker主机的IP地址,以及从主机到容器的端口映射,并在容器内部完成此操作。

  • 问题内容: 创建新容器后,是否可以运行命令以从主机获取容器的IP地址? 基本上,一旦Docker创建了容器,我想滚动自己的代码部署和容器配置脚本。 问题答案: 该的选项就派上用场了。 现代Docker客户端语法为: 旧的Docker客户端语法为: 这些命令将返回Docker容器的IP地址。 如注释中所述:如果在Windows上,请在花括号周围使用双引号而不是单引号。

  • 我有一个docker应用程序,我使用以下docker compose。yml运行它: 我有一个没有docker化的服务器在我的机器上运行,我可以通过访问它。我希望我的服务能够访问它。 我发现有人建议在我的服务配置中添加以下内容: 但是当我添加这个时,并尝试,我得到。当我尝试<code>curl时,也会出现同样的错误http://host.docker.internal:3000。 我拼命地尝试将端

  • 问题内容: 我想在不同主机上的某些Docker容器中运行任务。而且我编写了一个管理器应用程序来管理容器(启动任务,停止任务,获取状态等)。容器启动后,它将向管理器发送一个http请求及其地址和端口,因此管理器将知道如何管理该容器。 由于同一主机上可能运行着多个容器,因此它们将被映射到不同的端口。要在我的经理上注册一个容器,我必须知道每个容器映射到哪个端口。 如何 在 Docker容器中获取映射的端