【问题标题】:Docker dynamic expose port via host mode, but the ports are not accessible from externalDocker通过主机模式动态暴露端口,但端口无法从外部访问
【发布时间】:2021-05-03 22:54:56
【问题描述】:

我正在尝试在需要侦听动态端口的容器中运行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端口可用。

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

  2. 当事情超出我的想法时,我返回我的 VPS 以检查端口是否实际暴露。我使用netstat -nlptu命令,结果显示VPS正在监听7500和9000端口。

是不是很奇怪?

【问题讨论】:

  • 主机网络在 MacOS 上不起作用,通常是不必要的。您应该能够使用docker run -p 选项从容器中发布(并且,如果需要,重新映射)端口。当你尝试调用容器时,你调用的是什么 URL,从哪里调用,你会得到什么结果? (请在问题中添加这些细节是文本,而不是图像:终端的屏幕截图可能难以阅读,以后无法搜索。)
  • 感谢您观看问题,我已重新排列问题以使其更清晰。我仍在努力找出原因。有什么建议吗? @大卫迷宫
  • 感谢@hannele 的语法指导。!!!????????????

标签: docker docker-container docker-networking frp docker-network


【解决方案1】:

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

【讨论】: