Tensorflow DockerコンテナをUbuntuマシンにインストールしました。 tensorflow docker セットアップ手順 を指定:
docker run -it b.gcr.io/tensorflow/tensorflow
これにより、ドッカーコンテナターミナルに移動し、pythonを実行してHello Worldの例を実行できます。 。\ run_jupyter.shを手動で実行して、jupyterノートブックを起動することもできます。ただし、ホストからノートブックにアクセスできません。
ホストマシンからノートブックを使用できるようにjupyterノートブックを起動するにはどうすればよいですか?理想的には、Dockerを使用してコンテナーを起動し、1つのコマンドでjupyterを起動したいと思います。
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回だけ行う必要があります。
$ cd
を実行します$ docker run -it -p 8888:8888 -p 6006:6006 -v /$(pwd)/tensorflow:/notebooks --name tf b.gcr.io/tensorflow/tensorflow
$ docker start -i tf
Windowsを使用していない場合は、おそらく
/$(pwd)
を$(pwd)
に変更する必要があります
Ipythonノートブックやデータセットなどのプロジェクトファイルの永続的なストレージとして使用するために、ホームディレクトリにtensorflow
という名前の空のフォルダーを取得します。
cd
は、ホームディレクトリにいることを確認します。-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用です-i
はインタラクティブを表します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"
Jupyterは、TensorFlowに対して Docker image を実行する準備ができました:
docker run -d -v $(pwd):/home/jovyan/work -p 8888:8888 jupyter/tensorflow-notebook
あなたがWindowsマシンを使用しているドッカー初心者であれば、これらの手順はうまくいきました。
バージョン:Windows 8.1、docker 1.10.3、tensorflow r0.7
docker-machine ip
を使用してメモしてください。 「IPアドレス」と呼びましょう。次のようになります:192.168.99.104(このIPアドレスを作成しました)Dockerターミナルに次のコマンドを貼り付けます。
docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow
。
これを初めて実行する場合、この軽量vmにイメージをダウンロードしてインストールします。次に、「Jupyterノートブックは...で実行されています」と表示されるはずです->これは良い兆候です!
<your ip address (see above)>:8888
でブラウザを開きます。例えば。 192.168.99.104:8888/これを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に接続します
物事を少し整理するために、追加の説明をしたいと思います。これは、tensorflowを使用してdockerをセットアップするのにも苦労したためです。このために this videoを参照しますが、残念ながらすべてのケースで説明がつきません。既にdockerがインストールされていると思います。ビデオの非常に興味深い一般的な部分は、0:44分から始まり、そこで彼はついにdockerを開始しました。そこまで、彼はテンソルフローリポジトリをフォルダにダウンロードするだけで、それをコンテナにマウントします。もちろん、コンテナに他のものを入れて、後でdocker VMでアクセスできます。
最初に、彼は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で表示されます。
次のステップ:コンテナーを実行しながら、その中で何かを実行したい場合。この場合、jupyter NotebookまたはTensorflowまたは何でも:これを行うには、dockerに新しく作成されたコンテナーでdocker exec –ti [CONTAINER_ID] bash
を実行させます。このコマンドは、コンテナーでbashシェルを開始します。これは、「$」がroot @ [CONTAINER_ID]:に変更されたためです。ここから戻る方法はありません。 Dockerターミナルに戻りたい場合は、彼が1分10秒で行っているように、別の新しいDockerコンソールを起動する必要があります。コンテナで実行されているbashシェルを使用して、Jupiterやtensorflowなどを実行し、何でも実行できます。 runコマンドで指定したホストシステムのフォルダーは、「/ media/disk」の下にあるはずです。
VM出力にアクセスする最後のステップ。それはまだ私のために解決したくなかったし、私は私のノートにアクセスできませんでした。起動したノートブック、テンソルボードセッションなどにアクセスするには、正しいIPとポートを見つける必要があります。最初にdocker-machine –ls
を使用してメインIPを見つけます。このリストでは、URLを取得します。 (それが唯一のコンテナである場合、デフォルトと呼ばれます。)ここで指定されたポートは省略できます。次に、docker ps
から、転送されたポートのリストを取得します。リストに0.0.0.32776-> 6006/tcpと書かれている場合、最初に指定したポート(Awkyard)を使用してホストマシンからアクセスできます。そのため、私の場合、コンテナで実行されたテンソルボードは「ポート6006で起動」と言いました。次に、ホストマシンから http://192.168.99.100:32776/ と入力してアクセスする必要がありました。
->そしてそれだけです!こんな感じで走りました!
ターミナルプロンプトが表示されます。
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」に変更する必要があります。
何らかの理由で、--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
を使用してノートブックを起動したのに、これを実行する必要はありません)。
いずれにせよ、上記のコマンドは私のために機能し、他の人に役立つかもしれません。