Translate

2016年12月13日火曜日

Dockerで上げていた Tensorflow コンテナの jupyter がいきなりパスワードを要求してきた

これまでDockerサーバとして使っていたPCのHDDを交換して再インストールし、
この上で gcr.io/tensorflow/tensorflow:latest-gpu

nvidia-docker run -it -p 8888:8888 -p 6006:6006 gcr.io/tensorflow/tensorflow:latest-gpu

で起動して、

http://xxx.xxx.xxx.xxx:8888/

をブラウザでひらいたら..



あれ?パスワード入力画面がでてきた..

コマンド一発起動なので、パスワードなんて何も指定してないんだけど..



-itで実行していたのでコンソール側を見ていると..

The Jupyter Notebook is running at: http://[all ip addresses on your system]:8888/?token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

ってメッセージが出ていた。


あれ?なんかGETパラメータのtokenがついてる..

で、このGETパラメータ付きのURLで入ってみると、パスワード画面が出てこなくなった..

でもこれだと -d オプションで起動したらtokenがわからなくなる..

とおもって、Dockerfile.gpuを見てたら
jupyter_notebook_config.pyCOPYしているところを発見。

で、このコードを見てみると
環境変数PASSWORDにパスワード文字列を指定できるようになっていた。

と、いうことで

nvidia-docker run -e PASSWORD=password -d -p 8888:8888 -p 6006:6006 gcr.io/tensorflow/tensorflow:latest-gpu

と、起動すればパスワードが「password」になるようになった。



..たのむからREADME.mdくらいには書いておいてほしかったなあ..




p.s.

タグ名に devel とついているイメージのDockerfileCMD /bin/bash となっているので、基本 -it オプションを付けてコマンドラインを有効にして使うことを前提にしています。このため -d オプションで起動するとattach/exec以外なにもできなくなります。

タグ名に devel がついていないイメージのDockerfileCMD /run_jupyter.sh となっており、Jupyterが起動します。このため -it を付けて実行すると、デフォルトトークン(パスワード代わりにつけるHTTP GETパラメータ付きURL)がコンソールに出ますが、シェル操作はできません。 -d オプションを代わりに付ければ、デーモン起動になります。

なお、コンテナ側ポート番号 8888 をホスト側ポート番号 9999 で使いたい場合は、 -p 9999:8888 とつけてください(1つのDockerサーバで複数上げる場合がある)。

ただ..Docker Hub上のイメージの仕様がまた変わることもあります...
(仕様がかわったら、コメント欄に教えていただけると、ありがたいです)

0 件のコメント:

o1-previewにナップサック問題を解かせてみた

Azure環境上にあるo1-previewを使って、以下のナップサック問題を解かせてみました。   ナップサック問題とは、ナップサックにものを入れるときどれを何個入れればいいかを計算する問題です。数学では数理最適化手法を使う際の例でよく出てきます。 Azure OpenAI Se...