web-dev-qa-db-ja.com

TensorFlow Docker Jupyter Notebookを起動するにはどうすればよいですか

Tensorflow DockerコンテナをUbuntuマシンにインストールしました。 tensorflow docker セットアップ手順 を指定:

docker run -it b.gcr.io/tensorflow/tensorflow

これにより、ドッカーコンテナターミナルに移動し、pythonを実行してHello Worldの例を実行できます。 。\ run_jupyter.shを手動で実行して、jupyterノートブックを起動することもできます。ただし、ホストからノートブックにアクセスできません。

ホストマシンからノートブックを使用できるようにju​​pyterノートブックを起動するにはどうすればよいですか?理想的には、Dockerを使用してコンテナーを起動し、1つのコマンドでjupyterを起動したいと思います。

48
Robert Graves

Linuxホストの場合、Robert Gravesの回答は機能しますが、Mac OS XまたはWindowsの場合は、Dockerが仮想マシンで実行されるため、さらにやることがあります。

そのため、Dockerシェル(またはLinuxを使用している場合はシェル)の起動を開始し、次のコマンドを実行して新しいTensorFlowコンテナーを起動します。

docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow ./run_jupyter.sh

次に、Mac OS XおよびWindowsの場合、次の操作を1回だけ行う必要があります。

  1. VirtualBoxを開く
  2. Docker vmをクリックします(私の名前は自動的に「デフォルト」になりました)
  3. 設定をクリックして設定を開きます
  4. ネットワーク設定でポート転送ダイアログを開きます
  5. +記号をクリックして別のポートを追加し、以下に示すようにダイアログに入力して、MacからVMにポートを接続します。この例では、ポート8888を使用して他のノートブックを実行するため、ポート8810を選択しました。 enter image description here
  6. 次に、ブラウザを開いて http:// localhost:881 (またはホストポートセクションで設定したポート)に接続します
  7. おしゃれな機械学習アプリを作ろう!
47
Craig

私のシンプルで効率的なワークフロー:

TL; DRバージョン:

  1. Dockerクイックスタートターミナルを開きます。既に開いている場合は、$ cdを実行します
  2. これを実行once$ docker run -it -p 8888:8888 -p 6006:6006 -v /$(pwd)/tensorflow:/notebooks --name tf b.gcr.io/tensorflow/tensorflow
  3. 毎回開始するには:$ docker start -i tf

Windowsを使用していない場合は、おそらく/$(pwd)$(pwd)に変更する必要があります

Ipythonノートブックやデータセットなどのプロジェクトファイルの永続的なストレージとして使用するために、ホームディレクトリにtensorflowという名前の空のフォルダーを取得します。

説明:

  1. cdは、ホームディレクトリにいることを確認します。
  2. params:
    • -itはインタラクティブの略で、ターミナル環境でコンテナと対話できます。
    • -v Host_folder:container_folderは、ホストとコンテナー間でフォルダーを共有できるようにします。ホストフォルダはホームディレクトリ内にある必要があります。 /$(pwd)は、Windows 10では//c/Users/YOUR_USER_DIRに変換されます。このフォルダーは、Ipython/Jupyter Notebookで使用されるコンテナー内のnotebooksディレクトリーとして表示されます。
    • --name tfは、名前tfをコンテナに割り当てます。
    • -p 8888:8888 -p 6006:6006コンテナのポートをホストにマッピングします。最初のペアはJupyterノートブック用、2番目はTensorboard用です
  3. -iはインタラクティブを表します

クラウド上でTensorFlowを実行

17
Thoran

docker documentation をさらに読んだ後、私に役立つ解決策があります:

docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow ./run_jupyter.sh

-p 8888:8888および-p 6006:6006は、同じポート番号のホストにコンテナーポートを公開します。 -p 8888を使用するだけの場合、ホスト上のランダムなポートが割り当てられます。

./run_jupyter.shは、コンテナー内で実行する内容をdockerに指示します。

このコマンドを使用すると、ホストマシンのブラウザーを使用して http:// localhost:8888 / に接続し、jupyterノートブックにアクセスできます。

更新:Windowsでdockerを使用してレスリングした後、dockerを使用してUbuntuマシンに切り替えました。私のノートブックは、ドッカーのセッション間で消去されていました。コンテナ内のホストディレクトリもマウントし、マウントされたディレクトリを指すjupyterを起動する更新されたコマンドを次に示します。これで、ノートブックがホストに保存され、次回のテンソルフローの起動時に使用できるようになります。

docker run -p 8888:8888 -p 6006:6006 -v /home/rob/notebook:/notebook b.gcr.io/tensorflow/tensorflow sh -c "jupyter notebook /notebook"
10
Robert Graves

Jupyterは、TensorFlowに対して Docker image を実行する準備ができました:

docker run -d -v $(pwd):/home/jovyan/work -p 8888:8888 jupyter/tensorflow-notebook

4
Rush

あなたがWindowsマシンを使用しているドッカー初心者であれば、これらの手順はうまくいきました。

バージョン:Windows 8.1、docker 1.10.3、tensorflow r0.7

  1. Dockerクイックスタートターミナルを実行する
  2. ロードされたら、IPアドレスをメモします。見つからない場合は、このdocker-machine ipを使用してメモしてください。 「IPアドレス」と呼びましょう。次のようになります:192.168.99.104(このIPアドレスを作成しました)
  3. Dockerターミナルに次のコマンドを貼り付けます。

    docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow

    これを初めて実行する場合、この軽量vmにイメージをダウンロードしてインストールします。次に、「Jupyterノートブックは...で実行されています」と表示されるはずです->これは良い兆候です!

  4. <your ip address (see above)>:8888でブラウザを開きます。例えば。 192.168.99.104:8888/
  5. Ipythonファイルが表示されることを願っています。
4
Javiar Sandra

これをhyper-vで実行するには。次の手順を実行します。

1) https://blogs.msdn.Microsoft.com/scicoria/2014/10/09/getting-docker-running-on-hyper-v-8-1-2012-を使用してdocker仮想マシンを作成しますr2 / これにより、作業用のDockerコンテナが得られます。コンソールまたはsshを介して接続できます。これは多くのメモリを使用すると確信しているので、少なくとも8GBのメモリを入れます。

2)「ifconfig」を実行して、Docker VMのIPアドレスを確認します

3)ドッカーシェルプロンプトで次のように入力します。

docker run -p 8888:8888 -p 6006:6006 -it b.gcr.io/tensorflow/tensorflow

4)http:/ [ifconfig address]:8888 /を使用してJupyter Workbenchに接続します

2
kariato

物事を少し整理するために、追加の説明をしたいと思います。これは、tensorflowを使用してdockerをセットアップするのにも苦労したためです。このために this videoを参照しますが、残念ながらすべてのケースで説明がつきません。既にdockerがインストールされていると思います。ビデオの非常に興味深い一般的な部分は、0:44分から始まり、そこで彼はついにdockerを開始しました。そこまで、彼はテンソルフローリポジトリをフォルダにダウンロードするだけで、それをコンテナにマウントします。もちろん、コンテナに他のものを入れて、後でdocker VMでアクセスできます。


  1. 最初に、彼はdocker run –dit -v /c/Users/Jay/:/media/disk –p 8000 –p 8888 –p 6006 b.gcr.io/tensorflow/tensorflowという長いdockerコマンドを実行します。 「run」コマンドはコンテナを起動します。この場合、コンテナ「b.gcr.io/tensorflow/tensorflow」を開始します。そのアドレスは、 tensorflow docker installation tutorial 内で提供されます。コンテナは、ローカルでまだ利用可能でない場合、Dockerによってダウンロードされます。次に、さらに2種類の引数を指定します。ホストシステムのフォルダーを、コンテナーへの指定されたパスにマウントします。最初にパーティションを指定することを忘れないでください(例: "/ c /")。さらに、彼は後でparams -pを使用してホストマシンからポートが利用可能になると宣言します。このすべてのコマンドから、このコンテナ実行の[CONTAINER_ID]を取得します! Dockerコンソールで「docker ps」を実行すると、現在実行中のコンテナーをいつでも確認できます。上記で作成したコンテナは、このリストに同じIDで表示されます。


  2. 次のステップ:コンテナーを実行しながら、その中で何かを実行したい場合。この場合、jupyter NotebookまたはTensorflowまたは何でも:これを行うには、dockerに新しく作成されたコンテナーでdocker exec –ti [CONTAINER_ID] bashを実行させます。このコマンドは、コンテナーでbashシェルを開始します。これは、「$」がroot @ [CONTAINER_ID]:に変更されたためです。ここから戻る方法はありません。 Dockerターミナルに戻りたい場合は、彼が1分10秒で行っているように、別の新しいDockerコンソールを起動する必要があります。コンテナで実行されているbashシェルを使用して、Jupiterやtensorflowなどを実行し、何でも実行できます。 runコマンドで指定したホストシステムのフォルダーは、「/ media/disk」の下にあるはずです。


  3. VM出力にアクセスする最後のステップ。それはまだ私のために解決したくなかったし、私は私のノートにアクセスできませんでした。起動したノートブック、テンソルボードセッションなどにアクセスするには、正しいIPとポートを見つける必要があります。最初にdocker-machine –lsを使用してメインIPを見つけます。このリストでは、URLを取得します。 (それが唯一のコンテナである場合、デフォルトと呼ばれます。)ここで指定されたポートは省略できます。次に、docker psから、転送されたポートのリストを取得します。リストに0.0.0.32776-> 6006/tcpと書かれている場合、最初に指定したポート(Awkyard)を使用してホストマシンからアクセスできます。そのため、私の場合、コンテナで実行されたテンソルボードは「ポート6006で起動」と言いました。次に、ホストマシンから http://192.168.99.100:32776/ と入力してアクセスする必要がありました。

->そしてそれだけです!こんな感じで走りました!

1
BaluJr.

ターミナルプロンプトが表示されます。

FOR /f "tokens=*" %i IN ('docker-machine env --Shell cmd vdocker') DO %i
docker run -it tensorflow/tensorflow:r0.9-devel

または

FOR /f "tokens=*" %i IN ('docker-machine env --Shell cmd vdocker') DO %i
docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel

「vdocker」を使用するか、vdockerを「default」に変更する必要があります。

0
Jung-Ho Park

何らかの理由で、--ipフラグを使用して、提供された例を超えて克服する必要がある1つの追加の問題に遭遇しました。

nvidia-docker run --rm \
  -p 8888:8888 -p 6006:6006 \
  -v `pwd`:/root \
  -it tensorflow/tensorflow:latest-devel-gpu-py3 sh -c "jupyter notebook --ip 0.0.0.0 ."

そして、私のマシンから http:// localhost:8888 経由でアクセスできます。いくつかの点でこれは理にかなっています。コンテナ内で、使用可能なすべてのアドレスを表す0.0.0.0にバインドします。しかし、これを行う必要があるかどうかは異なるようです(たとえば、jupyter/scipy-notebookを使用してノートブックを起動したのに、これを実行する必要はありません)。

いずれにせよ、上記のコマンドは私のために機能し、他の人に役立つかもしれません。

0
Karl Rosaen