【发布时间】:2020-07-30 09:09:24
【问题描述】:
张贴这个经验(问题)以防其他人遇到同样的情况......
使用多个私有 REST-API(在 python/Flask 中)进行多容器 Docker-Compose 部署。 系统部署在 Ubuntu VM 主机上,并且运行了数周没有出现任何问题。 (这是一个内部演示设置)
主 GUI 突然变得几乎没有响应。每个 API 调用都花费了很长时间,以至于导致随机超时,使其无法使用。 调查显示,当一个容器尝试调用另一个容器中的 API 时,API 调用最多需要 10 秒。
罪魁祸首是主机上的 /etc/resolv.conf 文件。 DevOps 已更改所有主机以在 resolv.conf 中包含一个搜索行,该搜索行在重新启动时被 Docker 容器拾取。 这会导致每个内部 API 调用尝试通过搜索找不到服务名称的位置、超时,然后尝试下一个位置来解析服务名称。
违规resolv.conf:
search local.company.com company.com
nameserver 127.0.0.11
options ndots:2
这导致尝试连接到 http://my-service:12345/api/v1/health 被尝试为 my-service.local.company.com (timeout) my-service.company.com (timeout) 最后只是 my-service (API 成功)。
下面列出的有效答案。
【问题讨论】:
-
感谢您的贡献! The standard way to do this is to post your question, then answer your own question with the solution,所以你应该考虑编辑它以匹配它。再次感谢您分享您的知识。
标签: docker docker-compose dns