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

时间:2014-12-26 04:26:13

标签: dns docker

在主机上,查找域名速度非常快。但是在码头工人的容器里,它很多 慢,有时超时。

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

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

我对这种现象感到困惑,任何人都可以解释和帮助吗?

1 个答案:

答案 0 :(得分:1)

我不确定为什么在容器中解析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'

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

# nm-tool  |grep DNS
    DNS:             172.24.100.50
    DNS:             10.1.100.50

使用上述步骤中的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

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

root@labadmin-VirtualBox:/home/labadmin# cat /etc/docker/daemon.json
{
    "dns" : ["172.24.100.50", "8.8.8.8"]
}

有关Docker DNS configuration的更多信息。

重新启动泊坞窗服务并再次验证:

# 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

通过运行容器检查它:

# 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

希望这有帮助。