Docker

一歩先へ!docker-composeでデータ分析や機械学習のためのJupyterLab環境を手軽に構築する方法

Buy Me a Coffee at ko-fi.com

docker-composeとJupyterLabの重要性とその組み合わせの利点

近年、データ分析や機械学習の分野でPythonが広く使われています。その中でJupyterLabは、その強力な機能と柔軟性から多くの人々に支持されています。しかし環境構築は面倒な作業になることもあります。そこで今回はDockerを用いて手軽にJupyterLab環境を構築する方法をご紹介します。

本記事で構築できる環境の特徴

Dockerを使用して、以下の特徴を持つ機械学習用のJupyterLab環境を構築することができます。

  • Pythonのバージョンを容易に切り替え (Python3 ⇄ Python21)
  • JupyterLabの起動が簡単2
  • 環境が不要になったらすぐ削除可能
  • MacとWindows上で、簡単に環境構築可能

Dockerを活用したJupyterLab環境の構築は、機械学習エンジニアにとって有用なスキルと言えるでしょう。この記事では、以下からその手順を詳しく解説します。ご興味のある方はぜひ参考にしてみてください。

ステップ1:必要なソフトウェアとツールのインストール

Docker Hubログイン後Docker Desktopのインストール。
今回はDocker Official Imagesのpythonを使用。

ステップ2:Dockerfileとdocker-compose.ymlファイルの作成

Dockerfileという名前のテキストファイルを任意のディレクトリに作成します。作成後、以下を参考に必要な設定を記載します。
必要に応じて、FROMに記載されているDockerイメージを変更します。

Dockerイメージ設定内容
Python3python:3
Python2python:2

Python3の場合のDockerfileは以下になります。

Dockerfile3

FROM python:3
USER root
WORKDIR /usr/src/app
ENV DEBIAN_FRONTEND noninteractive
# 必要なパッケージを記載
RUN apt-get update && apt-get install --no-install-recommends -y \
    curl && \
    apt clean
# 必要なPythonパッケージを記載
RUN python -m pip install --upgrade pip && pip install \ 
    numpy \
    scipy \
    matplotlib \
    ipython \
    scikit-learn \
    pandas \
    pillow \
    mglearn \
    requests \
    pyperclip \
    beautifulsoup4 \
    jupyterlab
RUN jupyter serverextension enable --py jupyterlab
ENV DEBIAN_FRONTEND dialog

docker-compose.yml

以下の内容のdocker-composeファイルをDockerfileと同じディレクトリに格納します

設定項目設定内容
ホスト側共有フォルダ/Users/User_Name/Docker/JupyterLab/codes
コンテナ側共有フォルダ/home/JupyterLab/codes
JupyterLabログイン用パスワードNotebookApp.token=○○○
JupyterLabホームディレクトリNotebookApp.notebook_dir=’/home/JupyterLab/codes’
Dockerコンテナ名jupyterlab
version: '3'
services:
  jupyterlab:
    build:
      context: .
      dockerfile: "Dockerfile"
    user: root
    volumes:
      - jupyterlab-dir:/home/JupyterLab/codes
    ports:
      - "8888:8888"
    environment:
      TZ: Asia/Tokyo
    command:
      jupyter lab 
          --ip=0.0.0.0
          --allow-root
          --no-browser
          --NotebookApp.notebook_dir='/home/JupyterLab/codes'
          --NotebookApp.token='○○○'
volumes:
  jupyterlab-dir:
    driver_opts:
      type: none
      device: /Users/MacBookLover/Docker/JupyterLab/codes
      o: bind

「NotebookApp.token=’○○○’」にはJupyterLabにアクセスするためのパスワードを設定します。4

ステップ3:Dockerイメージビルド

以下のコマンドでイメージをビルドします

docker-compose build

以下のコマンドでイメージを確認

docker image ls

jupyterlabというイメージが表示されていたら大丈夫です

ステップ4:Dockerコンテナを起動

JupyterLabを使うときは、以下のコマンドで起動します

docker-compose up

停止するときは、ターミナル上でcontrol+c

ステップ5:JupyterLabへアクセス

以下のURLにアクセスし、パスワードを入力するとJupyterLab画面が表示されます。
JupyterLab上で作成したコードは(ipynbファイルなど)は、ホスト側共有フォルダに出力されているため、コンテナを削除しても作成したコードは削除されません。

http://localhost:8888/

改訂版 Pythonユーザのための Jupyter[実践]入門

注釈

  1. Python2は2020年1月1日にサポート終了 ↩︎
  2. docker runで長いオプションをつけるのではなく、設定ファイル(Dockerfileやdocker-compose.yml)に記載し、docker-compose upだけで簡単起動 ↩︎
  3. Dockerfile のベストプラクティス」によれば、RUN apt-get upgrade や dist-upgrade の実行は避ける。1文でapt-GETを書くことによりapt-get update のキャッシュ・バスティングが働いて、確実に新バージョンがインストールされるようになります ↩︎
  4. 平文ではなく、ハッシュ化されたパスワードを記載するときは、「–NotebookApp.token=’○○○’」を「–NotebookApp.password=’sha1:○○○’」へ変更してください ↩︎