首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拥有新名称服务器的码头工人

问拥有新名称服务器的码头工人
EN

Stack Overflow用户
提问于 2016-04-01 17:14:49
回答 2查看 3.9K关注 0票数 2

如何在/etc/resolv.conf (dockerfile)中添加新的名称服务器?

在我的文档中,我使用:

代码语言:javascript
复制
FROM ubuntu:14.04

RUN echo "nameserver 10.111.122.1" >> /etc/resolv.conf

在我的测试中,我使用:

代码语言:javascript
复制
docker run --rm 746cb98d6c9b echo cat /etc/resolv.conf

我没有得到我的零钱(新的名字服务器).所以我试着加入甘露里

代码语言:javascript
复制
docker run --rm 746cb98d6c9b echo "nameserver 10.111.122.1" >> /etc/resolv.conf 

我得到了

代码语言:javascript
复制
zsh: permission denied: /etc/resolv.conf

如何更改此文件的权限或使用根用户或在docker文件中使用chmod?我真正的任务是为构建这个dockerfile添加和dns服务器。

我用的是linux薄荷糖。

通过对docker命令进行ping测试(使用--dns),我得到了一个正确的结果。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-02 01:15:43

因此,向容器的构建过程添加新的DNS信息的方法之一是向Docker守护进程添加一些启动选项。该过程的文献资料显示,您将使用的选项是--dns。配置文件的位置取决于您的特定发行版。在我的Linux机器上,文件位于/etc/default/docker中。在Linux上,查找DOCKER_OPTS=行,并向该行添加适当的--dns=x.x.x.x条目。

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

代码语言:javascript
复制
DOCKER_OPTS="--dns=8.8.4.4 --dns=8.8.8.8"

此外,在--dns或--dns-search启动选项中,Docker将使用正在运行的主机的/etc/resolv.conf。

票数 4
EN

Stack Overflow用户

发布于 2016-04-02 10:25:30

在创建容器期间,可以调整Docker容器的DNS配置,并且不需要在Docker映像本身中进行硬编码。

向容器传递单个DNS服务器的方法是提供--dns参数:

代码语言:javascript
复制
$ docker run --rm --dns=8.8.8.8 <image>

您可以提供多个DNS服务器,还可以定义其他与DNS相关的选项,如DNS搜索名称或通用DNS选项:

代码语言:javascript
复制
$ 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作为命令传递给容器,则可以很容易地验证传递的DNS配置选项是否已进入容器的DNS配置:

代码语言:javascript
复制
$ 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 run配置,可在https://docs.docker.com/engine/reference/commandline/run/上找到

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36362150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档