Docker:如何从容器内访问我的服务器的公共(public) IP?

标签 docker networking docker-compose traefik

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

这些是我的容器:

申请A - 可通过 https://abc.xyz/a 访问

申请 B - 可通过 https://abc.xyz/b 访问

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

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

现在的问题是我根本无法访问 https://abc.xyz/b来自 申请A .以下所有命令均在 内执行申请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 限制?

最佳答案

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

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

关于Docker:如何从容器内访问我的服务器的公共(public) IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56656049/

相关文章:

docker - AWS 负载均衡器后面使用 Traefik 进行 HTTPS 重定向

docker - 在Pod中获取 “ErrImageNeverPull”

linux - docker 显示 "?"上的文件权限

Linux curl post 请求和错误 417 但 sudo 成功?

c++ - 如何从 IPv4 映射的 IPv6 地址解析 IPv4 地址?

c# - 游戏的网络消息序列化

node.js - 我的express.js hello世界和Docker安装程序在做什么?

Python 消息传递器 LAN

git - 当 GitHub 上的 master 分支更新时,刷新 ubuntu 服务器上的存储库。我怎样才能做到这一点?

selenium - 从 docker-compose.yml 运行 Zalenium 时自动拉取依赖镜像