docker - 上游问题 Docker-NGINX / Pinging Containers
问题描述
我需要一些帮助来解决 Docker Network 的问题并在它们之间访问容器。
首先介绍一下我基于Ubuntu的简单docker环境和一个本地安装的Docker环境。
我创建了一个额外的网络来链接多个容器。此网络中的容器具有固定的 IP4 网络地址。所以他们应该能够相互了解和访问。
在这些网络前面,我设置了一个 NGINX-Proxy 来从外部访问这些容器。NGINX 被分配给每个网络以及桥接网络。
好的...一切都很好并且可以正常工作,但是有时我遇到无法访问某些容器的问题,并且在 nginx-log 中出现以下错误:
2019/05/02 07:39:26 [error] 37#37: *29825 connect() failed (113: No route to host) while connecting to upstream, client: 213.182.2.102, server: ####.###.works, request: "GET /favicon.ico HTTP/2.0", upstream: "http://172.19.0.26:80/favicon.ico", host: "####.###.works", referrer: "https://####.###.works/preview/index.html?url=https://####.###.works/public/page/4291/preview?2019-04-30%2009:29:53"
2019/05/02 07:39:26 [warn] 37#37: *29825 upstream server temporarily disabled while connecting to upstream, client: 213.182.2.102, server: ####.###.works, request: "GET /favicon.ico HTTP/2.0", upstream: "http://172.19.0.26:80/favicon.ico", host: "####.###.works", referrer: "https://####.###.works/preview/index.html?url=https://fendt-wm-api.geneva.works/public/page/4291/preview?2019-04-30%2009:29:53"
...
结果是无法到达容器并且响应没有内容。
为了找到问题,我只是尝试从 docker-host 以及一些容器内部 ping IP 172.19.0.26。
PING 172.19.0.26 (172.19.0.26) 56(84) bytes of data.
64 bytes from 172.19.0.26: icmp_seq=1 ttl=64 time=0.180 ms
64 bytes from 172.19.0.26: icmp_seq=2 ttl=64 time=0.067 ms
64 bytes from 172.19.0.26: icmp_seq=3 ttl=64 time=0.067 ms
From 172.19.0.14 icmp_seq=1 Destination Host Unreachable
64 bytes from 172.19.0.26: icmp_seq=5 ttl=64 time=0.061 ms
From 172.19.0.14 icmp_seq=4 Destination Host Unreachable
From 172.19.0.14 icmp_seq=6 Destination Host Unreachable
64 bytes from 172.19.0.26: icmp_seq=8 ttl=64 time=0.131 ms
在所有尝试中,我都想知道为什么请求的 ping 是从 172.19.014 而不是 172.19.0.26 回答的?
我认为这将是有时访问容器失败的关键问题。
我现在花了几天时间进行研究调查。我还搜索了 stackoverflow,但没有找到任何适合我的问题的解决方案。
有人知道这里会发生什么吗?
BR马库斯
解决方案
推荐阅读
- logstash - 为什么filebeat会尝试连接elasticseach?
- javascript - How to pass data for partial view using Jquery
- angular - 在 Eclipse 中创建 Angular 项目失败,并显示消息“目录 \drivers\etc 不存在”
- c# - Xamarin 从 listview+sqlite 数据库中删除
- r - 使用 Gelman-Rubin PSRF 进行收敛诊断:R coda package vs Runjags
- python - 如何使用字典将数据插入数据框,如果列中存在键则设置值
- .net - .netcore 2.2 从 iframe 调用页面时的会话变量问题
- javascript - 仅使用前端(html、js、css)的模板
- android - 如何减少颤动中的视频录制大小?
- excel - Excel:周数,当周末的收入超过工作日的收入?