【发布时间】:2019-12-15 09:02:58
【问题描述】:
我已成功将我的应用程序的 docker 映像上传到 GCR,用它制作了一个 GCE 实例,启用了 http 转发,并且在 SSH 进入 GCE 实例后做了一个 'docker pull' + 'docker run -d -p 8888:8888' 但我无法通过外部 IP + 端口(8888)访问应用程序。 然后我尝试通过 SSH 连接到 GCE 实例,然后运行 'docker exec -it curl -v http://localhost:8080/healthCheck' 我可以访问我的应用程序。
我已经尝试通过 SSH 连接到我的 GCE 实例并运行 'docker exec -it curl -v http://localhost:8080/healthCheck' 所以我知道应用程序运行良好,只是缺少将其映射到外部 IP 的东西?我还添加了防火墙规则(8888 和 8080),我看到它们已映射到 GCE 实例。
预期:一旦我从 SSH 运行 'docker run -d -p 8888:8888' 到 GCE 实例,应用程序也应该可以使用 GCE 实例的 ExternalIP + 端口访问。 实际:在浏览器中获取“无法访问站点”,使用 curl 时回复为空。
【问题讨论】:
-
它在您本地系统上的 Docker 中工作吗?这通常是由于 (a) 容器内的进程没有监听特殊的“所有接口” 0.0.0.0 地址,或者 (b) 防火墙设置(尤其是在云环境中可能不在主机上 per硒)。
-
它可以在我的本地系统@DavidMaze 上运行
-
您的防火墙规则是否与您想要的结果一致?
-
我在防火墙规则上允许所有端口,它们适用于我网络中的所有实例...@Kolban
-
如果在 GCE 实例上使用 lsof 或 netstat,是否表明端口 8888 有一个活动的侦听器?
标签: docker kubernetes google-cloud-platform google-compute-engine