如何更改正在运行的Docker容器的DNS

5

我的国家防火墙屏蔽了默认的DNS 8.8.8.8和8.8.4.4,但我不想停止容器,因为我在其中安装了很多软件。


我觉得你对容器的重点和实用性至少错过了一半,如果你不能停下来并重新运行它的话。使用Dockerfile生成具有所需任何静态更改的新基础镜像,再加上数据持久化的卷,这将是我的起点。 - Chris Becke
1个回答

0

如果您想更改DNS,可以像在普通主机上一样进行操作,这应该可以正常工作。例如,在容器中编辑/etc/resolv.conf文件。

但是,如果完全被阻止,我建议采用更永久的解决方案。

/etc/default/docker(在基于Debian的主机上可能是/etc/default/docker.io)中,您可以添加一行以设置新容器的默认DNS。此行看起来可能类似于:

DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4"

您可以为每个要使用的DNS服务器添加一个新的-dns x.x.x.x

完成后,您需要重新启动Docker进程。这取决于主机,有几种不同的方法。对于基于Debian的主机:

 service docker.io restart

当您使用docker run运行新容器时,它将设置这些DNS服务器。

这将显然重新启动容器。此外,这不会更改容器设置,它们在容器创建时保持不变。 - Basilevs
这不会更改已运行容器的DNS设置。 - er-han
/etc/resolv.conf是Docker本身的挂载点,因此它可以管理容器DNS。该文件不可写,无法从容器内部更新。 - Paul Robello

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接