谷歌云防火墙暴露端口Docker

hfsqlsce  于 2023-10-16  发布在  Docker
关注(0)|答案(2)|浏览(112)

我成功地将Docker镜像部署到VM示例。如何向它发送网络请求?
代码是一个简单的Node. js/ express应用程序,只需res.json()“Hi there!“在根路径上。它正在监听端口3000。
我认为部署过程是这样的:
1.从Node. js/ express src构建Docker镜像。
1.在本地命令行上运行容器,正确暴露端口。它在当地工作。
1.用正确的项目ID /区域标记图像。
1.推到VM。我想我推了图像,而不是容器。有问题吗?

  1. SSH进入VM。运行docker ps并查看运行的容器是否具有正确的图像标记
    1.使用命令行curl(我使用zsh终端)以及浏览器来检查网络请求。获取connection refused error
    作为一个初学者,谷歌防火墙设置似乎是开放的--我已经允许所有端口上的ingress。

我也想在某个时候允许出口,但现在我的问题是,每当我试图联系IP地址时,无论是用我的Web浏览器还是从命令行curl,我都会得到一个connection refused error
看起来问题最有可能与防火墙有关,我已经确认我的Docker容器正在VM中运行(源代码在我的机器上工作)。
编辑:
更新防火墙规则,端口3000入口:

wrrgggsh

wrrgggsh1#

您需要一个允许流量到达tcp:3000的防火墙规则。
最好是从你的主机的IP(谷歌“什么是我的IP?“并使用它),但现在你可以(暂时)使用任何IP 0.0.0.0/0
防火墙规则也只能应用于运行容器的VM,但我一开始并不担心这个问题。

zxlwwiss

zxlwwiss2#

如果你也遇到了这个问题:>

  • 我在Debian 11 GCP VM上安装了docker.io 20.10版(默认)
  • 我配置了一个Nginx Docker,打开了FW

Docker Nginx可以从主机访问,但不能从互联网访问:(

  • 我使用tcpdump来验证到达主机的Internet请求流量
  • 最后我删除了docker.io 20.10并安装了docker 24.0.6

升级后,Nginx Docker可以从互联网上访问:)
升级后我注意到的唯一变化是额外的端口导出::::7070->80/tcp

相关问题