首页 > 解决方案 > 上游问题 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马库斯

标签: dockernginxjwilder-nginx-proxydocker-network

解决方案


推荐阅读