JupyterLabのコンテナ環境をつくる

ローカルのWindows PC上Dockerにて、JupyterLabのコンテナ環境を作成します。コンテナはdocker composeにて管理します。公式の参考サイト。

Jupyter Docker Stacks

JupyterLabについて

JupyterLabとは、Jupyter Notebookの後継ツールとのことです。

JupyterLab will eventually replace the classic Jupyter Notebook. Throughout this transition, the same notebook document format will be supported by both the classic Notebook and JupyterLab.

JupyterLab - Overview

環境

  • Windows10 Pro 10.0.18362 N/A ビルド 18362
  • VirtualBox 6.1
  • docker toolbox v19.03.1
  • Docker 19.03.5
  • docker-compose 1.24.1
  • JupyterLab 1.2.1

各設定ファイルの用意

docker-composeで起動するための各ファイルを用意します。

Dockerfile

FROM jupyter/datascience-notebook:7a0c7325e470
COPY requirements.txt /tmp/requirements.txt
RUN pip install -r /tmp/requirements.txt

公式のコンテナイメージが用意されています。

Jupyter Docker Stacks - Selecting an Image

jupyter/datascience-notebook は、データ分析用の各言語向けライブラリがビルドインされたイメージです。

jupyter/datascience-notebook includes libraries for data analysis from the Julia, Python, and R communities.

requirements.txt

boto3 == 1.10.50
s3fs == 0.4.0

追加でインストールしたいモジュールを定義。AWSを利用するための boto3 と、S3にアクセスするための s3fs をインストールします。

docker-compose.yml

version: "3.7"
services:
  jupyterlab:
    build: .
    container_name: jupyterlab
    environment:
      - JUPYTER_ENABLE_LAB=yes
      - AWS_ACCESS_KEY_ID=AKIXXXXXXXXXXXXXXXXXX
      - AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXX
    ports:
      - "8888:8888"
    volumes:
      - /c/Users/zunda/Desktop/volume:/home/jovyan/work
    command: start.sh jupyter lab --NotebookApp.token=''

必要なオプションを設定。

  • JUPYTER_ENABLE_LAB=yes にて、JupyterLabが有効になります
  • AWSのクレデンシャル情報を設定
  • ローカルPCのDesktopをボリュームマウント
  • NotebookApp.token='' を付与してJupyterLab起動することで、ログイン時のtoken入力を不要とします

environmentsで設定可能なオプションは、下記ドキュメントにて確認できます。

Docker Options

起動

起動します。

> docker-compose up
...
jupyterlab    | Executing the command: jupyter lab --NotebookApp.token=
jupyterlab    | [I 21:22:37.927 LabApp] Writing notebook server cookie secret to /home/jovyan/.local/share/jupyter/runtime/notebook_cookie_secret
jupyterlab    | [W 21:22:38.156 LabApp] All authentication is disabled.  Anyone who can connect to this server will be able to run code.
jupyterlab    | [I 21:22:39.360 LabApp] JupyterLab extension loaded from /opt/conda/lib/python3.7/site-packages/jupyterlab
jupyterlab    | [I 21:22:39.360 LabApp] JupyterLab application directory is /opt/conda/share/jupyter/lab
jupyterlab    | [I 21:22:40.547 LabApp] Serving notebooks from local directory: /home/jovyan
jupyterlab    | [I 21:22:40.547 LabApp] The Jupyter Notebook is running at:
jupyterlab    | [I 21:22:40.547 LabApp] http://399c4ecf2bdd:8888/
jupyterlab    | [I 21:22:40.547 LabApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

http://(docker-machineのIPアドレス):8888 で、JupyterLabにアクセスできます。

f:id:goodbyegangster:20200111070826p:plain

動作確認

ちゃんと動きますね。

f:id:goodbyegangster:20200111071459p:plain