首页 > 解决方案 > Docker:如何从容器内访问我的服务器的公共 IP?

问题描述

我在 linux 服务器上运行不同的应用程序作为 docker 容器。我可以使用 SSL 访问 docker 容器。我使用的反向代理traefik配置为代理子目录而不是子域。

这些是我的容器:

应用程序 A - 可通过https://abc.xyz/a

应用程序 B - 可通过https://abc.xyz/b

从我的浏览器访问它们时,这两个应用程序都已启动并运行并正常工作。

现在我需要将Application B嵌入Application A。我知道我可以只使用容器的内部 IP(因为它们在同一个网络上),但是,嵌入式应用程序必须可供应用程序 A以及我的本地浏览器访问 - 所以我需要使用面向公众的 IP/URL .

现在的问题是我根本无法https://abc.xyz/bApplication A访问。以下所有命令都在Application A docker 容器内执行。

平工作:

$ ping abc.xyz
64 bytes from 150.150.150.150: seq=0 ttl=64 time=0.204 ms

所以 DNS 正在工作。

然而wget显示:

$ wget https://abc.xyz/b
Connecting to abc.xyz (150.150.150.150)
(Nothing happens)

我根本无法弄清楚问题出在哪里。它是在traefik还是这是一个 docker 限制?

标签: dockernetworkingdocker-composetraefik

解决方案


经过更多研究后,我发现它与docker或根本无关traefik。主机 linux 启用了防火墙 ( ufw),它阻止了来自 docker 容器的请求,因为它没有正确配置。

我现在允许从容器访问并且它可以工作。


推荐阅读