无法访问使用docker和google云部署的应用

时间:2015-08-01 23:50:50

标签: python linux docker google-cloud-platform

我目前通过Google Cloud Platform设置了一个Linux Debian VM。我安装了docker,并希望开始在其中运行应用程序容器。

我正在关注Docker网站Found Here下的文档 “在Docker中运行Web应用程序”我下载图像并运行它没有任何问题。然后我运行$sudo docker ps并获取端口0.0.0.0:32768->5000/tcp

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

2 个答案:

答案 0 :(得分:2)

首先,测试一下您的服务是否有效。要执行此操作,请从VM本身运行:

wget http://localhost:32768

curl http://localhost:32768

如果可以,那就意味着服务运行正常,所以让我们进一步调试。

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

  1. VM的操作系统防火墙
  2. Google Compute Engine防火墙
  3. 您可以通过访问来自VM本身和同一GCE网络上的其他VM的URL来查看您是否受到第一个问题的影响(使用URL中的VM名称,而不是外部IP): / p>

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

    要解决第一个问题,您必须打开the single port(推荐):

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

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

    如果在修复此问题后,您可以从同一GCE网络上的其他主机访问该网址,但仍无法从Google Compute Engine外部访问该网址,则您会受到第二个问题的影响。要修复它,您需要open the port in the GCE firewall;这也可以通过Developers Console中的网络用户界面完成。

答案 1 :(得分:0)

如下所示在本地ssh配置文件中使用特定的本地转发端口创建一个条目。就我而言,它是一个纱线IP的示例,我想在浏览器中访问它。

Host hadoop
     HostName <External-IP>
     User <Local-machine-username>
     IdentityFile ~/.ssh/<private-key-for-above-user>
     LocalForward 8089 <Internal-IP>:8088