Divio应用程序在设置本地Docker容器时显示错误,因为(根据'divio doctor'),Docker内部的DNS解析不起作用。
我已在W10主机上设置了Ubuntu 18.1 VBox VM,以用作Divio本地开发盒。但是,在主机上运行Docker时,DNS解析从来都不是问题。
我在/etc/docker/daemon.json中添加了“dns”:[8.8.8.8],以使DNS在终端上工作。
以下命令返回正确的答案:
docker run busybox nslookup control.divio.com
Server: 8.8.8.8
Address: 8.8.8.8:53
Non-authoritative answer:
Name: control.divio.com
Address: 217.150.252.173
有人知道如何解决此问题吗?
最佳答案
这是怎么回事:在容器内部执行以测试DNS解析(nslookup control.divio.com
)的命令有5秒钟的超时。
您的命令(docker run busybox nslookup control.divio.com
做同样的事情-但没有超时。
无论出于何种原因,都需要花费5秒钟以上的时间才能获得响应,因此在第一种情况下会失败。
尚不清楚为什么有时会发生这种情况,但没有明显的原因-DNS解析不应花费那么长时间。
但是,您可以通过在docker-server-dns
文件中的skip_doctor_checks
中添加~/.aldryn
来禁用此测试。 See the Divio Cloud documentation for details。
更新2019年1月8日
Divio App已更新(版本为0.13.1),将在您下次启动时提供,以及Divio CLI(版本为3.3.10),如果您在Divio Shell之外使用,则可以使用pip install --upgrade divio-cli
进行安装。
在此更新中,查找工作方式已更改,以减轻进行DNS检查(现在进行更严格的检查)时网络问题的影响。
现在,您应该能够在docker-server-dns
文件中重新启用禁用的~/.aldryn
测试。
更新2019年3月8日
使事情复杂化的是,事实证明,用于运行这些测试的Busybox镜像在最新版本中已更改,并且很难确保测试中使用的命令可以与用户碰巧拥有的任何Busybox版本一起使用。
运行docker pull busybox
将更新镜像,对于许多用户而言,这已经解决了问题。一些用户将能够恢复上述失败的测试。
关于docker - Divio应用程序或CLI “doctor”报告DNS故障,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54035480/