将服务容器的主机名设置为主机的主机名

问题描述:

我使用docker群模式运行docker swarm。假设我有4个节点,1个经理,3个工人。该主机名是:将服务容器的主机名设置为主机的主机名

  • manager0
  • worker0
  • worker1
  • worker2

global模式启动的服务,让每一个节点都运行该服务一次。 比方说,命令如下:

docker service create --name myservice --mode global --network mynetwork ubuntu wait 3600 

mynetwork是覆盖网络。

现在我试图访问容器中的docker主机的主机名,所以我可以将主机名传递给容器中的应用程序。

我试图通过与环境变量(--env hostname=$(hostname))的主机名,但实际上${hostname}仅在经理执行和主机名设置为manager0所有节点。

有没有办法访问主机名或将主机名传递给容器?

+0

每个主机启动容器在启动时通过一个随机字符串定义了实现的,所以我不认为我们可以通过它作为启动时的一个选项。是否可以运行4个独立的服务,以便为每个服务定义不同的名称? –

+0

这不会很好地扩展。 4个节点是我的基本设置,但将来会添加更多节点。我无法为每个节点启动服务。也许我应该看一个键值存储来保存主机名或者从我的DNS服务器获取主机名。 – k4l4m

您可以使用最新的naming templates以主机名创建服务。

+0

BTW命名模板不仅可用于创建服务,还可用于服务更新(未记录,但经过测试,确实可行,至少对于--hostname) –

这里是功能请求,已在泊坞窗版本17.10

https://github.com/moby/moby/issues/30966