2020年6月29日月曜日

DockerコンテナでJupyterLab環境を作成する

普段はJupyter Notebookを使っているが、JupyterLabというJupyterプロジェクトの次世代UIがあるので、試しに使ってみることにした。インストールしてもいいのだが、最近はDockerが便利なので、DockerコンテナでJupyterLabを使う環境を作成してみる。


環境


Docker Desktop(Windows10 Pro)。



Dockerイメージ


まずはベースとなるDockerイメージを選ぶ。Jupyterプロジェクトによるイメージ(Selecting an Image)もあるのだが、今回はAnaconaのイメージ(continuumio/anaconda3)を使う。このイメージにはPandasなどデータ分析に必要なライブラリだけでなくJupyterLabもインストールされている。


イメージのカスタマイズ


Docker Hubにあるイメージはそのままでも起動できるが、いくつか手を加えたいのでDockerfileを用意する。日本語フォントのインストールと、タイムゾーン、ロケールの設定を行う。
FROM continuumio/anaconda3:latest

# 作業ディレクトリの作成
WORKDIR /work

# ロケールと日本語フォントのインストール 
RUN apt update \
 && apt -y install --no-install-recommends \
    locales fonts-takao \
 && sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen \
 && locale-gen \
 && apt clean \
 && fc-cache -fv

# タイムゾーンとロケールの設定
ENV TZ="Asia/Tokyo" \
    LANG="ja_JP.UTF-8" \
    LANGUAGE="ja_JP:ja" \
    LC_ALL="ja_JP.UTF-8"

EXPOSE 8888

# JupyterLabの起動
# --NotebookApp.tokenでトークン(jupyter)を指定
# 起動時のディレクトリを/workに設定
ENTRYPOINT ["jupyter-lab", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root", "--NotebookApp.token='jupyter'", "--notebook-dir=/work"]


docker-compose.ymlの用意


docker-composeでコンテナを起動するためにdocker-compose.ymlを用意する。Dockerfileでイメージをビルドするようにし、コンテナのポート8888をホスト側の8888で使えるようにする。また、ホスト(Windows)のd:\workをコンテナからマウントして、ここでファイルなどを共有できるようにしておく。

version: "3"
services:
  jupyter:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: jupyter
    volumes:
    # ホストのd:\workをコンテナの/workにマウント
      - d:\work:/work
    ports:
      - 8888:8888


コンテナの起動


作成したDockerfileとdocker-compose.ymlを同じフォルダに置いて、docker-composeコマンドでコンテナを起動する。


コンテナの確認


ホストでブラウザからlocalhost:8888にアクセスするとJupyterLabのログイン画面が表示される。Dockerfileで指定したトークンでログインできる。

ロケールもちゃんと変更されている。



0 件のコメント:

コメントを投稿