请问 docker 如何永久修改主机名,以及固定 IP?

2021-04-02 18:55:06 +08:00
 psyer

初学者一枚。 docker 为最新版本,我在 docker 做 hadoop 集群的时候,在 Dockerfile 里写入:

# 6. 修改主机名
RUN echo "master" > /etc/hostname

但是重启 docker 之后,主机名还是变成了一串英文+数字,类似这样 root@e1a36096e506. 有没有办法可以永久修改主机名,以及固定 IP 地址?

1915 次点击
所在节点    问与答
12 条回复
tomczhen
2021-04-02 18:58:00 +08:00
发帖问网友。×
去看官方文档。✓
搜索 docker hostname 。√
psyer
2021-04-02 20:15:48 +08:00
@tomczhen 我知道运行时可以通过-h 指定主机名,不知如何永久生效。你有更好的办法吗?
oott123
2021-04-02 20:47:52 +08:00
因为你试图在 dockerfile 里做这个事情的思路是错误的。正确的办法就是通过 -h 指定主机名。
walpurgis
2021-04-02 21:31:25 +08:00
为什么 docker 需要主机名,要固定 ip,还要永久生效?请描述一下业务场景,避免 XY 问题
Slartibartfast
2021-04-02 22:59:09 +08:00
正确答案:Dockerfile 是 Image 描述,而 Hostname 是 Container 的属性。

前者无法定义后者。
psyer
2021-04-03 02:09:08 +08:00
@walpurgis 正文写了,做的 Hadoop 集群。需要的固定的主机名和 IP 。
psyer
2021-04-03 02:10:17 +08:00
@oott123 谢谢。目前只能-h 制定了。
psyer
2021-04-03 02:12:09 +08:00
@Slartibartfast 谢谢。不过我也可以在 container 里面 vim /etc/hostname,修改之后重启也会失效。
Phant0m
2021-04-03 05:27:15 +08:00
如果是集群固定 IP 这个方法不如创建网络,然后集群在创建的网络下运行,docker 之间互通可以指定 alias 或者指定 link 网络,不需要通过 ip 来访问。
Slartibartfast
2021-04-03 07:44:48 +08:00
@psyer 那可以用 K8s 的 statefulset
julyclyde
2021-04-04 11:21:39 +08:00
@psyer 容器不存在“重启”这个动作。那叫销毁另建
psyer
2021-04-04 12:20:37 +08:00
@julyclyde 你是真的杠,你把 docker restart 吃了?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/767639

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX