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

时间:2015-02-04 17:17:19

标签: docker hosts

为了支持一些旧的软件解决方案,我需要将我的容器的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 个答案:

答案 0 :(得分:6)

docker run命令有一个名为--hostname=""的选项,用于处理您的/etc/hostname文件。

/etc/hosts文件中的host-to-ip映射可以使用选项--add-host=[]进行管理。

答案 1 :(得分:4)

将容器名称添加到/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进行测试。