为了支持一些旧的软件解决方案,我需要将我的容器的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
我该怎么办?
答案 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进行测试。