无法在Docker容器中编辑/etc/resolv.conf

我想添加一个域项到我的docker集装箱的/etc/resolv.conf

这是我的docker文件

 FROM tomcat:8.0.20-jre7 VOLUME /tmp #RUN sed -i "s|search local|domain com.example.com|g;" /etc/resolv.conf RUN echo "domain com.example.com" >> /etc/resolv.conf # Expose ports. EXPOSE 8080 

我试了echosed 。 与sed ,我在构build过程中出现错误。

sed: cannot rename /etc/sed6LcoES: Device or resource busy

但与echo容器构build并成功运行。 但是,当我进入容器时,我没有看到我的域添加在/etc/resolv.conf

为什么它不工作?

注意:我有运行parameter passing过程中的dns-search工作

docker run -p 8080:8080 --dns-search=com.example.com -d --name myawesome my/myawesome:latest

但我有兴趣让dockerFile工作。

这是devise。 docker引擎使用/etc/resolv.conf来处理服务发现。 文档声明如下:

Docker如何为每个容器提供一个主机名和DNSconfiguration,而不必使用内部写入的主机名来构build一个自定义映像? 它的诀窍是在容器内用虚拟文件覆盖三个关键的/ etc文件,在那里它可以写入新的信息…这种安排允许Docker做一些聪明的事情,比如当主机接收到新的configuration时,保持resolv.conf在所有容器中保持最新稍后的DHCP。 Docker如何在容器中维护这些文件的确切细节可以从一个Docker版本更改为下一个版本,所以您应该保留文件本身,并使用下面的Docker选项。

如果您想覆盖/重新configuration一些dns设置, --dns在容器启动时使用--dns参数。 查看更多细节:

  • 在Docker中configurationDNS