我使用lwieske / java-8:server-jre-8u121-slim with Alpine Linux
我想从文本文件中设置主机名以便全局查看(适用于所有shell)
/ # env
HOSTNAME=2fa4a43a975c
/ # cat /etc/afile
something
/ # hostname -F /etc/afile
hostname: sethostname: Operation not permitted
所有在swarm中作为服务运行的内容
我希望每个节点都有基于容器ID的唯一主机名。
答案 0 :(得分:1)
您也可以为docker run提供--hostname标志:
docker run -d --net mynet --ip 162.18.1.1 --hostname mynodename
答案 1 :(得分:0)
docker service create
有一个--hostname
参数,允许您指定主机名。从更个人的角度来说,如果您将连接到您的某个服务,那么同一网络上的任何其他服务都将是可ping的,并且可以使用服务名称进行访问,还有一个额外的好处,即允许您使用多个副本而不必担心这些服务的内容被命名。
答案 2 :(得分:0)
关于解决方法,可以使用docker-compose
为多个容器分配主机名。
下面是示例docker-compose.yml
:
version: '3'
services:
ubuntu01:
image: ubuntu
hostname: ubuntu01
ubuntu02:
image: ubuntu
hostname: ubuntu02
ubuntu03:
image: ubuntu
hostname: ubuntu03
ubuntu04:
image: ubuntu
hostname: ubuntu04
要使其动态化,您可以从脚本中生成docker-compose.yml
。
然后运行:docker-compose up
。
答案 3 :(得分:0)
迟到总比不到好。发现这个 Q 试图自己找到同样的东西。
答案是赋予 docker 容器 SYS_ADMIN 功能,'hostname -F' 现在将正确设置主机名。
docker-compose: 帽_添加: - 系统管理员