无法在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
我试了echo
和sed
。 与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