dockerコンテナ上でjupyter-notebookを起動させてローカルPCのブラウザで動かすための方法。
1. ポートの接続
コンテナ上のポートとローカルのポートを接続する。
docker run -p [ローカルのポート]:[コンテナのポート]
とすれば接続できる。
2. notebook起動時にオプションをつける
コンテナ上でjupyter notebook
とコマンドしても
OSError: [Errno 99] Cannot assign requested address
と出る。
以下のようにipとallow-rootオプションをつければ解決。
jupyter notebook --ip=0.0.0.0 --allow-root
※もし、1.のポートの接続時のコンテナのポートがnotebookのデフォルト値の8888以外にした場合は以下のようにしてポートも設定する必要がある。
jupyter notebook --port [コンテナ側の接続ポート] --ip=0.0.0.0 --allow-root
3. ブラウザでnotebookにアクセス
ローカルPCのブラウザでコンテナで起動したnotebookにアクセスする。
ブラウザに下記URLを打ち込む。
localhost:[ローカル側の接続ポート]
するとJupyter Notebookの画面に遷移してPassword or token:
と入力が求められる。
入力するためのtokenはコンテナ上でnotebookを起動したときに以下のようなURLが出るのでそこから取得する。
Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://5217807fea51:8888/?token=601c330c097e59cd7b69dcaa6ea336218583a492e4684bde&token=601c330c097e59cd7b69dcaa6ea336218583a492e4684bde
上の場合、601c330c097e59cd7b69dcaa6ea336218583a492e4684bde
をPassword or token:
に入力すればいつものnotebookの画面に遷移する。
4. notebookの設定を変更する(オプション)
notebook起動時に--port
とか--ip=0.0.0.0
とか--allow-root
とかをいちいち打ち込むのが面倒くさい人用。
これらの設定をconfigに書き込んでおく。
まず下記コマンドでconfigファイルを作成。
jupyter notebook --generate-config
/root/.jupyter/jupyter_notebook_config.py
にconfigファイルが作成されるので以下を書き加える。
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.port = [コンテナ側の接続ポート]
c.NotebookApp.token = ''
c.NotebookApp.allow_root = True
c.NotebookApp.open_browser = False
以後はjupyter notebook
とコマンドするだけで良い。