无法使用 RUN 从 Dockerfile 写入 /etc/hosts 文件

dly*_*988 10 hosts-file docker

我正在使用一个非常简单的 Dockerfile 制作一个 docker 镜像。在 Dockerfile 里面,我有这个命令:

RUN printf "192.92.13.243 www.hahaha.com \n" >> /etc/hosts
Run Code Online (Sandbox Code Playgroud)

命令本身似乎没问题,因为此时图像的创建不会停止。

问题是:运行映像时,应该插入“/etc/hosts”中的行不存在。

现在,我四处搜索,发现在 docker 1.2 版本之前,容器内的主机文件存在问题。就我而言,我使用的是目前最新的 1.5 版。

我错过了什么吗?

更新1:

在 docker 的 github 页面中,似乎有很多问题,无论是开放的还是封闭的。

jon*_*tan 12

这适用于 docker 1.7.0

RUN echo "192.168.11.112 myhost" >> /etc/hosts && wget http://myhost
Run Code Online (Sandbox Code Playgroud)

诀窍是在使用它的同一行添加主机名,否则主机文件将被重置,因为每个 RUN 命令都会启动一个新的中间容器。例如,这将不起作用

RUN echo "192.168.11.112 myhost" >> /etc/hosts
RUN wget http://myhost
Run Code Online (Sandbox Code Playgroud)


dly*_*988 8

在写下我的问题的更新后,我决定更仔细地查看在 github 中打开的“问题”。事实证明,已经实施了一种解决方法:

docker run ... --add-host='server:0.0.0.0' ...
Run Code Online (Sandbox Code Playgroud)

在启动容器时使用“--add-host...”参数可以修改主机文件。

  • 我希望能够在构建中做到这一点。运行容器的人不应该知道内部主机。零意义! (5认同)