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

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

我正在使用一个非常简单的 Dockerfile 制作 docker 镜像。在 Dockerfile 中我有以下命令:

RUN printf "192.92.13.243 www.hahaha.com \n" >> /etc/hosts

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

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

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

我是否遗漏了什么?

更新 1:

在 docker 的 github 页面上,似乎存在很多与此相关的问题,有开放的,也有封闭的。

答案1

这适用于 docker 1.7.0

RUN echo "192.168.11.112 myhost" >> /etc/hosts && wget http://myhost

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

RUN echo "192.168.11.112 myhost" >> /etc/hosts
RUN wget http://myhost

答案2

在更新了我的问题后,我决定再仔细看看 github 上打开的“问题”。结果发现,已经实施了一种解决方法:

docker run ... --add-host='server:0.0.0.0' ...

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

相关内容