0

私は Java を使用していますが、これは必ずしも Java に関する質問ではありません。Google の「java-compat」イメージは Debian (3.16.7-ckt20-1+deb8u3~bpo70+1 (2016-01-19)) です。

これが私の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 を開くためのファイアウォール ルールを作成しました。最後に、次のコマンドを使用して、「_ah/start」スタートアップ フックで vnc サーバー自体を呼び出しています。

x11vnc -forever -usepw -create

すべて正しくセットアップされているようですが、TightVNC に接続できません。Admin Console で見つけたインスタンスのパブリック (エフェメラル) IP アドレスを使用し、その後に ::5900 (TightVNC には何らかの理由で 2 つのコロンが必要です) を使用します。サーバーが接続を拒否したというメッセージが表示されます。実際、ポート 5900 に telnet で接続しようとすると、ブロックされます。

次に、コンテナーマシンに SSH で接続し、コンテナーのポートを wget xxx.xxx.xxx.xxx:5900 でテストすると、接続が確立されます。したがって、コンテナがポート 5900 での接続を受け入れていないように思えます。ポートを開き、VNC クライアントを Docker コンテナーにルーティングすることは可能ですか? どんな助けでも感謝します。

Compute Engine を使用できない理由。 マネージド VM の代わりに Google の Compute Engine 環境を使用することに関するいくつかのコメントを差し控えるためです。コードでデータストアとタスク キューを多用しています。それらが Compute Engine で実行 (またはネイティブ/効率的に実行) できるとは思いません。しかし、私はそれを別の質問として提起するかもしれません.

更新:コメントの Paul ごとに... docker 用語のいくつかを学んだこと: Google の環境でコンテナーにポートを公開できますか?

4

1 に答える 1

1

好奇心から - なぜインスタンスに VNC しようとしているのですか? 管理目的のみの場合は、マネージド VM インスタンスに SSH で接続できます。

可能であれば、VNC の代わりに SSH を使用してください

つまり、network/forwarded_ports 構成を使用して、VM からアプリケーション コンテナーにトラフィックをルーティングできます。

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"

お役に立てれば!

于 2016-02-16T06:28:38.267 に答える