Docker 通过主机模式动态公开端口,但无法从外部访问端口

问题描述

我正在尝试在需要侦听动态端口的容器中运行 frp。这意味着 frp 可能会在运行时打开额外的端口。

我的操作步骤

  1. 在我的远程 VPS 上,我使用以下命令启动 frp 服务器。请注意,我使用 host 模式,根据 Docker 文档,这意味着所有打开的 frp 端口都可以从主机和外部机器访问。
docker run -d \
--network=host \
-v /etc/frp:/etc/frp/:ro \
--name frps \
--rm \
290007431/frps:v0

这是容器内的程序,显示7500和9000端口可用

beginning

  1. 在我的 Mac (Big Sur) 和 RaspBerry Pi (Debian 10) 上,我尝试通过端口 7500 访问仪表板 Web,结果失败。所以我使用 namp 来扫描端口。这是结果

    result

    。它表明 7500 和 9000 无法从客户端端点(Mac 和 RaspBerry Pi)访问。

  2. 随着事情的发展,我回到我的 VPS 来检查端口是否真的暴露了。我使用 netstat -nlptu 命令,结果显示 VPS 正在侦听 7500 和 9000 端口

    result

是不是很奇怪?

解决方法

终于!!!我找到了无法从外部访问 VPS 的原因。也就是说,VPS 提供商具有默认防火墙,它在 VPS 之外运行。 我登录到 VPS Provider 控制台并进行配置。多么愚蠢的故事?

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...