dns在docker内部解析缓慢或超时

das*_*tan 5 dns docker

在主机上,查找域速度非常快.但是在docker容器内部,它会
慢得多,有时会超时.

主机是一个虚拟主机,它的DNS服务器地址是127.0.0.1(奇怪但是真实).所以我试图修改容器内的/etc/resolv.conf并将dns服务器设置为172.x(主机的地址).结果,我没有看到任何好的效果.

我也尝试将容器的dns服务器设置为自构建的服务器(101.x),但是,查找域名的速度很慢.另一个奇怪的事情是ping 101.x非常快.

我对这种现象感到困惑,有谁能解释和帮助?

Her*_*arn 8

我不确定为什么在容器中解析 DNS 很慢,但我有一个过程可以用来解析 docker 容器中的 DNS。

要验证 DNS 解析问题:

   # docker run busybox nslookup google.com
    Server:    8.8.8.8
    Address 1: 8.8.8.8
    nslookup: can't resolve 'google.com'
Run Code Online (Sandbox Code Playgroud)

找出您机器中使用的 DNS 服务器

# nm-tool  |grep DNS
    DNS:             172.24.100.50
    DNS:             10.1.100.50
Run Code Online (Sandbox Code Playgroud)

使用上述步骤中找到的 DNS IP 再次运行它,解决了 DNS 问题:

# docker run --dns 172.24.100.50 busybox nslookup google.com
Server:    172.24.100.50
Address 1: 172.24.100.50 indc01.radisys.com
Name:      google.com
Address 1: 2607:f8b0:4009:80c::200e ord36s01-in-x0e.1e100.net
Address 2: 172.217.4.110 ord36s04-in-f14.1e100.net
Run Code Online (Sandbox Code Playgroud)

要永久解决此问题,请将以下内容添加到新文件中:

root@labadmin-VirtualBox:/home/labadmin# cat /etc/docker/daemon.json
{
    "dns" : ["172.24.100.50", "8.8.8.8"]
}
Run Code Online (Sandbox Code Playgroud)

有关Docker DNS 配置的更多信息。

重启docker服务并再次验证:

# docker run busybox nslookup google.com
Server:    172.24.100.50
Address 1: 172.24.100.50 indc01.radisys.com
Name:      google.com
Address 1: 2607:f8b0:4009:801::200e ord30s31-in-x0e.1e100.net
Address 2: 172.217.4.238 ord30s31-in-f14.1e100.net
Run Code Online (Sandbox Code Playgroud)

通过运行容器来检查:

# docker run -it e02e811dd08f
/ # ping google.com
PING google.com (172.217.4.238): 56 data bytes
64 bytes from 172.217.4.238: seq=0 ttl=47 time=251.506 ms
64 bytes from 172.217.4.238: seq=1 ttl=47 time=245.621 ms
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。