docker - 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/b
从Application 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 限制?
解决方案
经过更多研究后,我发现它与docker
或根本无关traefik
。主机 linux 启用了防火墙 ( ufw
),它阻止了来自 docker 容器的请求,因为它没有正确配置。
我现在允许从容器访问并且它可以工作。
推荐阅读
- android - RecyclerView刷新列表值导致Index out of bounds异常
- python - 如何获取当前的日志格式化程序?
- python - Python/PyCharm,Python 包的新手和语法问题
- python - AWS boto3 分页器:获取存储桶的子集并排除某些“目录”
- verilog - 带执行和启用的三位计数器提供 X 输出
- python - 当一个复选框被切换时,如何获取 QTreeWidget 项目的文本?
- android - kotlin 编写 nfc 标签未能写入超过 4 页或任何数字
- reactjs - 将 redux 调度传递给函数的最佳方法是什么?
- r - Minimal Bookdown 书无法正确渲染。我该如何解决这个问题?
- node.js - 使用带有firebase功能的角度httpClient的CORS错误