【发布时间】:2021-06-14 08:13:37
【问题描述】:
我在主机 183.83.83.83 上有一个 docker 容器
子域 mycontainer.example.com 的 A 记录指向这个 IP。
curl 到 183.83.83.83 或 mycontainer.example.com 会给出 HTTP 状态 200 和正确的网站。
但是,来自该主机上每个容器内部的相同 curl(到上面的 IP 或主机名)无法连接:
curl: (7) Failed to connect to mycontainer.example.com port 80: Host is unreachable
从另一个主机的 Docker 容器或主机本身尝试此操作时不会发生这种情况。
这里出了什么问题?
编辑:更多细节:
主机运行一个Nginx-proxy container,它将对mycontainer.example.com 的所有请求代理到我的前端容器(通过一个小节点网络服务器运行一个React 应用程序)。前端容器应该代理从mycontainer.example.com/api 到mycontainer.example.com:1337/api/v1 的所有API 请求。但是它无法代理 API 请求,因为我从该主机上运行的所有容器中收到错误 Host is unreachable。
【问题讨论】:
-
从您的容器中,您可以尝试stackoverflow.com/a/24716645/6309 并尝试卷曲该命令的结果吗?
-
结果是
172.17.0.1 -
即网桥IP地址。也许您可以按照我在stackoverflow.com/a/38178195/6309 中的建议使用 --host 代替?
-
我需要能够通过其公共 IP 访问它。我在我的问题中更详细地描述了这个问题。
-
我能够通过代理到容器名称而不是公共主机名(使用 Rancher)来解决它。