将服务容器的主机名设置为主机的主机名
问题描述:
我使用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
所有节点。
有没有办法访问主机名或将主机名传递给容器?
每个主机启动容器在启动时通过一个随机字符串定义了实现的,所以我不认为我们可以通过它作为启动时的一个选项。是否可以运行4个独立的服务,以便为每个服务定义不同的名称? –
这不会很好地扩展。 4个节点是我的基本设置,但将来会添加更多节点。我无法为每个节点启动服务。也许我应该看一个键值存储来保存主机名或者从我的DNS服务器获取主机名。 – k4l4m