2016-06-01 5 views
1

私のコンピュータからリモートサーバへのsshトンネルをJupyter Notebook(コンピュータ>サーバ> Dockerコンテナ)を実行しているドッカーコンテナに作成したいJupyter Notebookを私のブラウザの私のコンピュータに入れてください。Jupyterノートブックを実行しているリモートドッカーコンテナへのsshトンネルの作成

Dockerコンテナは、OS X(El Capitan)を実行しているマシンでホストされています。 DockerはデフォルトのマシンIP:192.168.99.100を使用しています。

$ docker-machine ls 
NAME  ACTIVE DRIVER  STATE  URL       SWARM DOCKER ERRORS 
default *  virtualbox Running tcp://192.168.99.100:2376   v1.11.1 

私は物理的にドッカーコンテナを実行しているサーバーで座って、そのドッカーコンテナからJupyterノートブックを作成するために、私のブラウザ(192.168.99.100:8888)を使用することができています。これは私のDockerポートバインディングが機能していること、そして私がJupyter Notebookを正しく実行していることを確認します。

しかし、クライアントマシンからそのリモートマシンのDockerコンテナへのsshトンネルの確立方法と、クライアントマシンのブラウザでJupiterノートブックを起動する方法がわかりません。

から出力:

$ docker ps 

は、以下を生成する:

CONTAINER ID  IMAGE      COMMAND    CREATED    STATUS    PORTS        NAMES 
48a8ac126c72  kubu4/bioinformatics:v11 "/bin/bash"   55 minutes ago  Up 55 minutes  8787/tcp, 0.0.0.0:8888->8888/tcp stupefied_pasteur 

私はしようとすると、ターミナルに次のエラーメッセージ内のリモートマシンのドッカー容器結果にSSHトンネルを作成するにマイ試みクライアントマシン(ブラウザ:localhost:8888)のJupyterノートブックを起動する:

channel 3: open failed: connect failed: Connection refused 

私は現在、トンネルを作成するために私の.ssh/configファイルに次のように使用しています:私はJupyterノートブックを実行する場合

Host tunnel3 
HostName remote.ip.address 
User user 
ControlMaster auto 
ServerAliveInterval 30 
ServerAliveCountMax 3 
LocalForward localhost:8888 localhost:8888 

私は正常に私のクライアントのブラウザでJupyterノートブックを起動するには、このトンネリング設定を使用することができますリモートマシン上のDockerコンテナの外にあるリモートマシン。私は、リモートマシンのドッカーコンテナにJupyterノートブックを起動したときに

追加したばかりの情報のため、これが出力されます。

$ jupyter notebook 
[I 18:23:32.951 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret 
[I 18:23:33.072 NotebookApp] Serving notebooks from local directory: /usr/local/bioinformatics 
[I 18:23:33.073 NotebookApp] 0 active kernels 
[I 18:23:33.073 NotebookApp] The Jupyter Notebook is running at: http://0.0.0.0:8888/ 
[I 18:23:33.074 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). 

答えて

4

私はそれを考え出しました! 「A-HA!」 Dockerを実行しているリモートマシンがOS X(El Capitan)であることを覚えていました。すべての私のDockerビルド/テストは、Linux(Ubuntu 14.04)マシンで実行されていました。違いは、この問題を解決するために重要であることが判明しました。

UbuntuにDockerをインストールすると、「localhost」を使用してDockerコンテナにアドレスすることができます。 DockerをOSXにインストールすると、Dockerコンテナのアドレス指定に使用するIPアドレスが生成されます。

これを実現するために、クライアントコンピュータのssh/configファイルでsshトンネリングの設定を変更しました。

旧トンネルの設定:

Host tunnel3 
HostName remote.ip.address 
User user 
ControlMaster auto 
ServerAliveInterval 30 
ServerAliveCountMax 3 
LocalForward localhost:8888 localhost:8888 

新トンネルの設定:この変更に伴い

Host tunnel3 
HostName remote.ip.address 
User user 
ControlMaster auto 
ServerAliveInterval 30 
ServerAliveCountMax 3 
LocalForward localhost:8888 192.168.99.100:8888 

、私は正常に実際にドッカーコンテナでホストされている私のクライアントのブラウザでJupyterノートブックを使う/作成することができますリモートマシンで、URLバーのlocalhost:8888を使用します。

関連する問題