[英]Alpine Linux docker set hostname
我在 Alpine Linux 上使用 lwieske/java-8:server-jre-8u121-slim
我想从文本文件中设置主机名以供全局查看(对于所有 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-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
。
--hostname
docker service create
有一个--hostname
参数,允许你指定主机名。 在更个人的情况下,如果您将连接到您的一项服务,那么同一网络上的任何其他服务都可以使用服务名称进行 ping 和访问,另外还有一个好处是允许您创建多个副本,而无需担心这些副本会发生什么被命名。
迟到总比不到好。 发现这个 Q 试图自己找到同样的东西。
答案是为 docker 容器提供 SYS_ADMIN 功能,'hostname -F' 现在将正确设置主机名。
docker-compose: cap_add: - SYS_ADMIN
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.