Docker:如何从容器中访问服务器的公共IP?

时间:2019-06-18 19:45:46

标签: docker networking docker-compose traefik

我在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的限制?

1 个答案:

答案 0 :(得分:0)

经过更多研究,我发现它与dockertraefik根本无关。主机Linux启用了防火墙(ufw),由于配置不正确,该防火墙阻止了来自Docker容器的请求。

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