5

我在 Alpine Linux 中使用 lwieske/java-8:server-jre-8u121-slim

我想从文本文件中设置主机名以在全球范围内看到(对于所有外壳)

/ # env
HOSTNAME=2fa4a43a975c

/ # cat /etc/afile
something

/ # hostname -F /etc/afile
hostname: sethostname: Operation not permitted

一切作为服务运行在 swarm

我希望每个节点都具有基于容器 ID 的唯一主机名。

4

4 回答 4

5

您也可以向 docker run 提供 --hostname 标志:

docker run -d --net mynet --ip 162.18.1.1 --hostname mynodename
于 2018-04-18T15:18:01.873 回答
2

至于解决方法,可以使用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

于 2019-02-14T23:38:25.493 回答
0

docker service create有一个--hostname允许您指定主机名的参数。更个人而言,如果您将连接到您的一项服务,那么同一网络上的任何其他服务都可以使用该服务名称进行 ping 和访问,另外还有一个好处是允许您拥有多个副本,而不必担心这些副本会发生什么被命名。

于 2017-08-02T13:35:21.023 回答
0

迟到总比没有好。发现这个 Q 试图自己找到同样的东西。

答案是为 docker 容器提供 SYS_ADMIN 功能,“hostname -F”现在将正确设置主机名。

docker-compose: cap_add: - SYS_ADMIN

于 2021-01-01T19:08:02.443 回答