无法访问使用Docker和Google云部署的应用程序

我目前有一个通过Google云端平台build立的Linux Debian虚拟机。 我已经安装了docker,并希望开始在其中运行应用程序容器。

我正在按照“在Docker中运行Web应用程序”下的Docker网站下的“ find这里 ”下的文档下载图像,并且没有任何问题地运行它。 然后我运行$sudo docker ps并获得0.0.0.0:32768->5000/tcp的端口

然后我尝试浏览到http://“MyExternalVMIP”:32768的网站,但应用程序没有出现。 我错过了什么吗?

首先,testing一下你的服务是否有效。 为此,从VM本身运行:

 wget http://localhost:32768 

要么

 curl http://localhost:32768 

如果这样做,这意味着服务正常运行,所以让我们继续进行debugging。

可能有两个防火墙阻止外部访问您的docker进程:

  1. 虚拟机的操作系统防火墙
  2. Google Compute Engine防火墙

您可以通过从同一GCEnetworking上的虚拟机本身和其他虚拟机访问URL(使用URL中的虚拟机名称,而不是外部IP)来查看是否受到第一个问题的影响:

 wget http://[vm-name]:32768 

要解决第一个问题,您必须打开单个端口 (推荐):

 iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 32768 -j ACCEPT 

或完全禁用防火墙,例如,通过停止iptables(不推荐)。

如果在解决此问题之后,您可以从同一GCEnetworking上的其他主机访问该URL,但仍无法从Google Compute Engine之外访问该URL,则会受到第二个问题的影响。 要修复它,你需要打开GCE防火墙的端口 ; 这也可以通过Developers Console中的Web UI完成。