我正在使用 Docker for Mac v 1.12.3,我遇到的问题是 HTTP 和 HTTPS 连接非常慢。DNS 和 Ping 看起来没问题,但 HTTP(S) 在 docker 镜像上需要 5 秒,而在主机上则需要 0.05 秒:
Host (MacOS Sierra):
time curl www.google.com
0.05 real
0.00 user
0.00 sys
Docker:
time curl www.google.com
real 0m5.615s
user 0m0.010s
sys 0m0.000s
我看不出这个问题或其他任何人遇到同样问题的原因。
有任何想法吗?
答案1
我注意到/etc/resolv.conf有 10 个不同的名称服务器条目(类似于 192.168.65.1)。在任何一个条目之前添加 Google 的 DNS 可以消除所有延迟。
更新:
您可能会发现(就像我一样),通过 moby debian 主机(见下文)进行的更改实际上不会在重新启动后持续存在。然而,我发现 Docker for Mac v1.12.3 现在既尊重命令--dns
的标志run
,也尊重dns
Compose 文件中的属性。如果您使用该--dns
标志,则无需修改任何解析配置文件使用该标志,它将nameserver
为您覆盖所有条目。
进一步挖掘后发现,我需要登录莫比图像来修改默认值。您可以通过查看您构建的任何图像的 resolv.conf 来确认这一点。如果它们没有已知 DNS,那么您需要按照此处的说明进行操作:
https://github.com/docker/docker/issues/24344#issuecomment-239942428