docker上でjupyter-notebookを使用する方法

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

上の場合、601c330c097e59cd7b69dcaa6ea336218583a492e4684bdePassword 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とコマンドするだけで良い。