主机修改 resolv.conf 文件后,怎么让已启动的 docker 容器生效。

2020-03-13 11:50:01 +08:00
 eric13517
最近一个项目在用 docker swarm,根据用户的要求,需要动态去设置主机的 /etc/resolv.conf 文件,加上以下内容:
search domain.local
nameserver xxx.xxx.xxx.xxx
设置后,在主机内就可以 ping 通 xxx.domain.local 这样的域名。

但这个设置对已启动的容器无效,容器内默认的 resolv.conf 文件是如下内容:
nameserver 127.0.0.11
options ndots:0
这时 ping 不通域名。

如果 docker 或主机重启后,容器内的 resolv.conf 文件会自动加上如下一行:
search domain.local
这时就可以 ping 通域名了。

因为容器比较多,不想改个文件就去重启 docker 或主机,有没有什么方法能让主机修改 resolv 文件后,对已启动的容器也立即生效?
3960 次点击
所在节点    Docker
4 条回复
coolloves
2020-03-13 13:52:21 +08:00
映射进去就可以吧
rrfeng
2020-03-13 13:55:38 +08:00
-v/tmp/resolv.conf:/etc/resolv.conf

映射进去没错,但内外别共享同一个免得带来不必要的麻烦。
eric13517
2020-03-13 14:12:51 +08:00
docker 内部有个 DNS:127.0.0.11 ,可以供容器之间互相访问,原来容器内部的 resolv.conf 配的是这个 DNS。
所以不能把主机的 resolv.conf 映射到容器里吧
julyclyde
2020-03-13 17:58:16 +08:00
libc 的行为
只读一次那个文件

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/652447

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX