docker - Divio 应用程序或 CLI“医生”报告 DNS 故障
问题描述
Divio 应用程序在设置本地 Docker 容器时显示错误,因为(根据“divio Doctor”)Docker 内部的 DNS 解析不起作用。
我在 W10 主机上设置了一个 Ubuntu 18.1 VBox VM,作为 Divio 本地开发盒。不过,在主机上运行 Docker 时,DNS 解析从来都不是问题。
我将 "dns": [8.8.8.8] 添加到 /etc/docker/daemon.json 以使 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
to来禁用此测试。有关详细信息,请参阅 Divio Cloud 文档。skip_doctor_checks
~/.aldryn
2019 年 1 月 8 日更新
Divio 应用程序已更新(至 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
将更新图像,对于许多用户来说,这已经解决了问题。一些用户将能够恢复上述会失败的测试。
推荐阅读
- java - elasticsearch,java api中的复合查询
- vuetify.js - 如何在 v-data-table 中使用 vue2-perfect-scrollbar 使一个固定标题的 v-data-table 的滚动条完美?
- docker - 无法执行命令在 docker 容器中设置环境变量
- c++ - 将类对象直接读入c ++中的向量
- python - 无法将 GPU 与 tensorflow dlerror:libcudnn.so.7 一起使用
- apache-kafka - Kafka Partition Rebalancing 的预期时间是多少?
- raspberry-pi - 如何将我的软件 raid nas 固定在我的树莓派 4 上?
- python - 问题是在列表 x 中找到等于 t 的 2 个连续数字的总和,并返回没有第二个数字的 x 列表
- embedded - esp32 wroom 32 接口 3.5intft,当我初始化 wifi.begin() 时,触摸不起作用
- angular - 页面刷新后,HttpInterceptor 未向后续请求添加新令牌