我正在使用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的唯一主机名。
您也可以为docker run提供--hostname标志:
docker run -d --net mynet --ip 162.18.1.1 --hostname mynodename
docker service create
有一个--hostname
参数,允许您指定主机名。从更个人的角度来说,如果您将连接到您的某个服务,那么同一网络上的任何其他服务都将是可ping的,并且可以使用服务名称进行访问,还有一个额外的好处,即允许您使用多个副本,而不必担心这些将会是什么被命名。
至于变通方法,可以使用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
。