具有新名称服务器的Docker

2024-05-15 05:32:15 发布

您现在位置:Python中文网/ 问答频道 /正文

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

在我的dockerfile中,我使用:

FROM ubuntu:14.04

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

在我的测试中,我使用:

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

我没有得到我的更改(新的名称服务器)。。。所以我试着礼貌地加上

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

我得到

zsh: permission denied: /etc/resolv.conf

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

我正在使用linux薄荷糖

我在docker run命令上通过ping测试得到了正确的结果(使用--dns


Tags: 文件dockerrmrunfromechodockerfile服务器
2条回答

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

通过提供 dns参数,将单个DNS服务器传递到容器:

$ docker run  rm  dns=8.8.8.8 <image>

您可以自由提供多个DNS服务器,还可以定义其他与DNS相关的选项,如DNS搜索名称或通用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作为命令传递给容器,则可以轻松验证传递的DNS配置选项是否已进入容器的DNS配置:

$ 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/找到

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

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

DOCKER_OPTS=" dns=8.8.4.4  dns=8.8.8.8"

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

相关问题 更多 >

    热门问题