Edited at

Docker で JupyterLab を起動し、token 入力なしでアクセスする


JupyterLab を起動する方法

事前にカレントディレクトリ下に「workspace」という名前のディレクトリを作っておきます。ノートブックをホストとコンテナで共有するためです。

そのあと、次のコマンドでコンテナを起動します。

$ docker run --rm --name jupyter -d -p 8888:8888 \

-v `pwd`/workspace:/workspace -w /workspace \
continuumio/anaconda3 \
jupyter-lab --no-browser --port=8888 --ip=0.0.0.0 \
--allow-root --NotebookApp.token=''

この状態で http://localhost:8888 にアクセスすることで、token 入力なしで JupyterLab を利用できます。

アクセス時のカレントディレクトリが /workspace にセットされており、ホストのディレクトリとマッピングされています。

なお、解説欄で詳細を書きますが、セキュアではない起動方法です。そのため、他のユーザがアクセスできる環境で使用する場合はご注意ください。


コンテナの終了

次のコマンドでコンテナを終了します。

$ docker kill jupyter


前提

上記手順は Docker for Mac で確認しました。

(恐らく他の Docker 環境でも同手順で対応できると思いますが未検証です)


解説

先ほどの起動コマンドのオプションを解説します。


docker run のオプション

まずは、docker run のオプションから。

# コンテナ終了時にコンテナを削除します

--rm

# コンテナを jupyter という名前で起動します
--name jupyter

# バックグラウンドで起動
-d

# ホストの 8888 番ポートとコンテナの 8888 番ポートをマッピング
-p 8888:8888

# カレントの workspace ディレクトリとコンテナの /workspace ディレクトリをマッピング
-v `pwd`/workspace:/workspace

# /workspace をワーキングディレクトリに設定
-w /workspace

# イメージ continuumio/anaconda3 から起動。
# イメージがないときは pull してくれますが、イメージサイズが大きいので少々時間がかかります・・
continuumio/anaconda3


JupyterLab のオプション

次に JupyterLab のオプションです。

JupyterLab を root で起動しており、ノートブックアクセス時のパスワードを無しにしています。よって、他ユーザのアクセスがない環境でご利用ください。

# ブラウザを起動しない

--no-browser

# ポート 8888 で起動
--port=8888

# サービスを IP アドレス 0.0.0.0 で LISTEN させる
# (この指定がないと、JupyterLab 起動時に例外が送出されて起動失敗します)
--ip=0.0.0.0

# root での実行は非推奨のため、このオプションをつけないと起動に失敗します
--allow-root

# Notebook アクセス時の token 文字列を設定できます。ここではパスワードなしにします。
--NotebookApp.token=''

token を設定する場合は、--NotebookApp.token='' オプションを外してください。

token 文字列は、コンテナ起動後に次のコマンドで確認できます。

$ docker logs jupyter


備考 - 無料で利用できる Jupyter Notebook

単に Jupyter Notebook を使用したいだけでしたら、無料のオンラインサービスもありますので、そちらの方が手軽かもしれません。例えば、Google の Colaboratory というサービスがあります。


参考

docker run

Github:Run notebook without requesting for stupid token #2254