Alpine Linux docker设置主机名

时间:2017-08-02 13:30:35

标签: linux docker hostname alpine swarm

我使用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的唯一主机名。

4 个答案:

答案 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: 帽_添加: - 系统管理员