Docker:如何从容器中访问服务器的 public IP?
Docker: How do I access my server's public IP from within a container?
我 运行 不同的应用程序作为 linux 服务器上的 docker 容器。我可以使用 SSL 访问 docker 容器。我使用的反向代理 traefik
配置为代理子目录而不是子域。
这些是我的容器:
应用程序 A - 可通过 https://abc.xyz/a
访问
应用程序 B - 可通过 https://abc.xyz/b
访问
两个应用程序都已启动并且 运行 并且在从我的浏览器访问它们时正常工作。
现在我需要将 应用程序 B 嵌入到 应用程序 A 中。我知道我可以只使用容器的内部 IP(因为它们在同一网络上),但是,Application A 以及我的本地浏览器必须可以访问嵌入式应用程序 - 所以我需要使用面向公众的 IP/URL.
现在的问题是我根本无法从 应用程序 A 访问 https://abc.xyz/b
。以下所有命令都在 Application A docker 容器内执行。
Ping 正常:
$ 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 限制?
经过更多研究,我发现它与 docker
或 traefik
完全无关。主机 linux 启用了防火墙 (ufw
),它阻止了来自 docker 容器的请求,因为它没有正确配置。
我现在允许从容器访问并且它有效。
我 运行 不同的应用程序作为 linux 服务器上的 docker 容器。我可以使用 SSL 访问 docker 容器。我使用的反向代理 traefik
配置为代理子目录而不是子域。
这些是我的容器:
应用程序 A - 可通过 https://abc.xyz/a
应用程序 B - 可通过 https://abc.xyz/b
两个应用程序都已启动并且 运行 并且在从我的浏览器访问它们时正常工作。
现在我需要将 应用程序 B 嵌入到 应用程序 A 中。我知道我可以只使用容器的内部 IP(因为它们在同一网络上),但是,Application A 以及我的本地浏览器必须可以访问嵌入式应用程序 - 所以我需要使用面向公众的 IP/URL.
现在的问题是我根本无法从 应用程序 A 访问 https://abc.xyz/b
。以下所有命令都在 Application A docker 容器内执行。
Ping 正常:
$ 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 限制?
经过更多研究,我发现它与 docker
或 traefik
完全无关。主机 linux 启用了防火墙 (ufw
),它阻止了来自 docker 容器的请求,因为它没有正确配置。
我现在允许从容器访问并且它有效。