如何将我的容器主机名添加到/etc/hosts中?

5
为了支持一些旧的软件解决方案,我需要将容器的主机名 hostname 绑定到 127.0.0.1,使我得到类似这样的结果:
$ hostname
4e84a7ae5f92
$ cat /etc/hosts | grep 127.0.0.1
127.0.0.1       localhost 4e84a7ae5f92

最好的情况是在 Dockerfile 中进行操作,但由于 docker build 构建的是镜像而不是容器,这似乎不太现实。
如果我尝试在运行的容器中使用 sed 进行操作,最终会出现错误:

$ sed -i '/^127\.0\.0\.1.*/ s/$/ '$(hostname)'/' /etc/hosts
sed: cannot rename /etc/sedC5PkA2: Device or resource busy

我能帮你做什么?(针对需要翻译的内容)
2个回答

10
docker的run命令有一个名为--hostname=""的选项,该选项可以处理您的/etc/hostname文件。
然后,--add-host=[]选项可以管理/etc/hosts文件中的主机到IP映射。

确实,但是我如何为即将运行的容器提供容器ID(因此还不存在)呢? - Anto
只需为其命名,并且根本不使用容器 ID。 - Jens Piegsa
好的,我想你可以使用--add-host选项来定义主机名。 - Anto

5
正确的将容器名称添加到/etc/hosts文件中的方式是使用--add-host标志。在您的情况下,假设您想要创建并启动一个名为<container-name>的新容器,使用<image-name>镜像,并以分离模式运行:
docker run --name <container-name> --add-host <container-name>:127.0.0.1 -d <image-name>`

这将创建以下/etc/hosts文件(请注意最后一行):
127.0.0.1       localhost
127.0.0.1       4e84a7ae5f92

已使用 Docker 1.12.0-rc2 进行测试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接