为了支持一些旧的软件解决方案,我需要绑定我的容器的hostname到127.0.0.1,让我有这样的事情:
$ hostname
4e84a7ae5f92
$ cat /etc/hosts | grep 127.0.0.1
127.0.0.1 localhost 4e84a7ae5f92
Run Code Online (Sandbox Code Playgroud)
最好的情况是在Dockerfile中做,但由于docker build构建了一个图像(而不是容器),它似乎不太现实.
此外,如果我尝试sed在正在运行的容器中执行此操作,我最终会收到错误:
$ sed -i '/^127\.0\.0\.1.*/ s/$/ '$(hostname)'/' /etc/hosts
sed: cannot rename /etc/sedC5PkA2: Device or resource busy
Run Code Online (Sandbox Code Playgroud)
我能做什么 ?
docker run命令有一个名为的选项--hostname="",用于处理您的/etc/hostname文件.
然后/etc/hosts可以使用选项管理文件中的host-to-ip映射--add-host=[].
添加容器名称的正确方法/etc/hosts是使用标志--add-host。在您的情况下,假设您要创建并启动一个<container-name>使用<image-name>分离模式下的图像命名的新容器:
docker run --name <container-name> --add-host <container-name>:127.0.0.1 -d <image-name>`
Run Code Online (Sandbox Code Playgroud)
这将创建以下内容/etc/hosts(请注意最后一行):
127.0.0.1 localhost
127.0.0.1 4e84a7ae5f92
Run Code Online (Sandbox Code Playgroud)
它已经使用 Docker 1.12.0-rc2 进行了测试。
| 归档时间: |
|
| 查看次数: |
5516 次 |
| 最近记录: |