Docker与新的名称服务器

如何在/etc/resolv.conf(dockerfile)中添加新的名称服务器? 我越来越… zsh:权限被拒绝:/etc/resolv.conf

在我的dockerfile我使用:

FROM ubuntu:14.04 RUN echo "nameserver 10.111.122.1" >> /etc/resolv.conf 

在我的testing中,我使用:

 docker run --rm 746cb98d6c9b echo cat /etc/resolv.conf 

我没有得到我的变化(新名称服务器)…所以我尝试添加mannualy

 docker run --rm 746cb98d6c9b echo "nameserver 10.111.122.1" >> /etc/resolv.conf 

…所以我得到“zsh:permission denied:/etc/resolv.conf”

我如何更改此文件的权限或使用root用户或在docker文件中使用chmod? 我真正的任务是添加和DNS服务器为我的这个docker文件的生成。

**我正在使用linux mint ***我得到一个正确的结果与一个pingtestingdocker运行命令(带–dns)

谢谢

因此,您可以将新的DNS信息添加到容器的构build过程中的一种方法是向Docker守护程序添加一些启动选项。 该stream程的文档显示,您将使用的选项是--dns 。 configuration文件的位置取决于您的具体发行版。 在我的Linux Mint机器上,该文件位于/etc/default/docker 。 在Linux Mint上,查找DOCKER_OPTS=行,并将相应的--dns=xxxx条目添加到该行。

例如,如果您要使用Google的DNS,则应该将该行更改为如下所示:

 DOCKER_OPTS="--dns=8.8.4.4 --dns=8.8.8.8" 

此外,在--dns--dns-search启动选项的情况下,Docker将使用它运行的主机的/etc/resolv.conf

Docker容器的DNSconfiguration可以在容器的创build过程中进行调整,不需要在Docker镜像本身进行硬编码。

通过提供--dnsparameter passing单个DNS服务器到容器工作:

 $ docker run --rm --dns=8.8.8.8 <image> 

您可以自由提供多个DNS服务器,您也可以定义其他DNS相关选项,如DNSsearch名称或常用DNS选项:

 $ docker run --rm --dns=8.8.8.8 --dns=8.8.4.4 --dns-search=your.search.domain --dns-opt=timeout:50 <image> 

如果您将cat /etc/resolv.conf作为命令传递给您的容器,则可以轻松地validation通过的DNSconfiguration选项是否将其转换为容器的DNSconfiguration:

 $ docker run --rm --dns=8.8.4.4 --dns=8.8.8.8 --dns-search=your.domain.name --dns-opt=timeout:50 alpine cat /etc/resolv.conf search your.domain.name nameserver 8.8.4.4 nameserver 8.8.8.8 options timeout:50 

请参考docker runconfigurationhttps://docs.docker.com/engine/reference/commandline/run/