2016-02-12 59 views
0

我正在使用Java,但这不一定是Java问题。 Google的“java-compat”图片是Debian(3.16.7-ckt20-1 + deb8u3〜bpo70 + 1(2016-01-19))。可能吗?如何在Google Managed VM环境中设置VNC

这里是我的Dockerfile:

FROM gcr.io/google_appengine/java-compat 
RUN apt-get -qqy update && apt-get qqy install curl xvfb x11vnc 
RUN mkdir -p ~/.vnc 
RUN x11vnc -storepasswd xxxxxxxx ~/.vnc/passwd 
EXPOSE 5900 

ADD . /app 

,并在管理控制台中,我创建防火墙规则开拓5900最后一点,我呼吁与VNC服务器本身在“_ah /启动”启动挂钩此命令:

x11vnc -forever -usepw -create 

所有似乎都设置正确,但我无法连接TightVNC。我在管理控制台中使用公用(短暂)IP地址,后跟:: 5900(由于某种原因,TightVNC需要两个冒号)。我收到服务器拒绝连接的消息。实际上,当我尝试telnet到5900端口时,它被阻止。

接下来我SSH到容器机,当我测试用的wget xxx.xxx.xxx.xxx:5900容器上的端口,我得到的连接。所以在我看来,容器不接受5900端口的连接。我是否正确?是否可以打开端口并将我的VNC客户端路由到Docker容器中?任何帮助赞赏。

为什么我不能使用Compute Engine。只是为了抢占一些关于使用谷歌的计算引擎环境而不是托管虚拟机的评论。我大量使用我的代码中的数据存储和任务队列。我认为这些可以在Compute Engine上运行(或者本地/高效运行)。但我可以将其作为一个单独的问题提出。

更新: Per Paul在评论中了解了一些码头术语:我可以在Google环境中的容器上发布端口吗?

+0

我相信揭露只暴露端口到其他码头实例。尝试发布它。 http://stackoverflow.com/questions/22111060/difference-between-expose-and-publish-in-docker –

+0

伟大的参考保罗。我认为这是我的问题 - 我无法控制“docker run”参数来放置该“-p”标志。该命令由Google环境执行(因此在托管虚拟机中被管理)。 – Robert

+0

fyi http://stackoverflow.com/questions/25602132/how-do-i-access-my-appengine-datastore-entities-from-my-compute-engine-vm –

回答

1

出于好奇 - 您为什么要将VNC加入您的实例?如果仅用于管理目的,则可以将SSH连接到托管虚拟机实例。

Use SSH instead of VNC if you can

虽然这样说 - 你可以使用网络/ forwarded_ports配置路由流量从虚拟机应用程序容器:

network: 
    forwarded_ports: 
    - 5900 
    instance_tag: vnc 

假如把它放在你的app.yaml,并重新 - 部署你的应用程序。您还需要在防火墙中打开端口(如果您打算通过公共互联网访问此端口):

gcloud compute firewall-rules create default-allow-vnc \ 
    --allow tcp:5900 \ 
    --target-tags vnc \ 
    --description "Allow vnc traffic on port 5900" 

希望这有助于您!

+0

app.yaml上的那些设置是深奥的魔法我需要!谢谢Justin。我想知道还有什么其他无证的秘密潜伏在app.yaml中...... – Robert

+0

哈,很高兴这很有帮助。 FWIW,我们的覆盖范围如下:https://cloud.google。com/appengine/docs/managed-vms/nodejs/configurations-your-app-with-app-yaml –

+0

另外 - 我必须知道 - 你为什么在这里使用VNC? –