当前位置: 首页 > 知识库问答 >
问题:

如何在没有env var的情况下从主机上的docker容器中获取docker主机的主机名

薛坚
2023-03-14

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

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

在docker主机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主机上还有许多其他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,我可以从中获取主机名。但我只是好奇万一我用的是docker而不是Helios。

共有1个答案

赫连坚
2023-03-14

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

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

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

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

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

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

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