Docker-Composeを使って5分でJupyterLabの環境構築

仕事でデータ分析とかもやっていかないといけなくて、勉強のための実行環境欲しいなと思って、自分のPCにJupyterLabをDocker-Composeを使って環境構築したので記事にしました。

実施環境

  • macOS Catalina(15-inch, 2016)
  • Docker for Macインストール済
  • Docker version 19.03.8
  • docker-compose version 1.25.4

JuptyerLabとは

ライブラリを使用したデータの可視化が簡単にでき、機械学習に必須の前処理やデータマイニングをデータを見ながら試行錯誤ができるという、データ分析には必須のIDEです。
JuptyerLabはJupyter notebookの後継でJupyter notebookの開発は一旦終了し,JupyterLabに移行すると公式アナウンスされています。

github.com

使用したDocker image

今回はJupyterLab公式のPythonとJuliaとRが使えて、デフォルトでpandasやscikit-learnなどのPythonライブラリが使えるdatascience-notebookというimageを使用します。Pythonしか使わない場合はscipy-notebookというimageがあるので、そちらを使った方が良いと思います。

他にもいろいろimageがありますので公式ドキュメントをご覧ください。
Selecting an Image — docker-stacks latest documentation

環境構築

  1. ローカルに今回の環境構築用のディレクトリを任意の場所に用意します。
  2. 1 で作ったディレクトリ配下に、workフォルダとdocker-compose.ymlを作成します。
  3. 作成したdocker-compose.ymlに以下のように記述します。
    version: "3"
    services:
      datascience-notebook:
        container_name: datascience-notebook-container
        # scipy-notebookの場合はjupyter/scipy-notebookになります。
        image: jupyter/datascience-notebook
        # コンテナの/home/jobyan/workをホストの./workで永続化
        volumes:
          - ./work:/home/jovyan/work
        ports:
          - 8888:8888
        restart: always
        # 今回はローカル起動用なのでログインは省略します。
        command: start.sh jupyter lab --NotebookApp.token=''
    
  4. terminalで 1 で作ったディレクトリ配下にて、初回は`docker-compose up --build`を実行しコンテナを起動します。(buildは結構時間がかかります。コマンドは次回以降`docker-compose up`でOK)
  5. http://localhost:8888/にアクセスして起動を確認します。 以下のような画面が出てきたら起動完了です。 f:id:okiyasi:20200712140752p:plain

動作確認

起動ができたら動作確認を行います。

  1. 左のworkフォルダをダブルクリックします。
  2. Luncherの中のNotebook Python3を選択すると以下のファイルが作成されます。 f:id:okiyasi:20200712141256p:plain
  3. 青い枠の中に以下のコードを書き込みます。
from sklearn.datasets import load_iris
import pandas as pd
iris = load_iris()
pd.DataFrame(iris.data, columns=iris.feature_names)

枠の中でShift + Enterを押し、以下のようなテーブルがちゃんと出てきたらOKです!

f:id:okiyasi:20200712141810p:plain

終わりに

Jupyter Labを使ったデータ分析の環境ができたので、本を使ったり、Kaggleをやったりしてデータ分析のスキルを身に付けていきたいですね!

O'Reilly Japan - Pythonによるデータ分析入門 第2版

Kaggle: Your Machine Learning and Data Science Community