Jupyter Docker StacksのイメージにJuliaのパッケージを追加する

2021.10.18

データアナリティクス事業本部の鈴木です。

Jupyter Docker Stacksdatascience-notebookにJuliaのパッケージを追加したイメージを作成する方法を紹介します。

検証の詳細

検証すること

datascience-notebookにJuliaのパッケージを追加したイメージを作成します。

Jupyter Docker Stacksのdatascience-notebookイメージを利用することで、Python・R・Juliaが利用できるJupyter NotebookおよびJuyterLab環境がすぐに利用できます。

Juliaについては、イメージにそれほど多くのパッケージが入っておらず、パッケージを追加する必要があります。 例えば、Juliaで可視化を行う際、まずはPlotsの利用が思い当たると思いますが、Plotsも初期状態ではインストールされていないため(少なくともjupyter/datascience-notebook:2021-10-07のタグのイメージでは)、ユーザーが追加する必要があります。

初期状態でのPlotsのインポート

前提

以下の環境で検証を行いました。

  • Docker version 20.10.7
  • macOS Catalina バージョン10.15.7
  • jupyter/datascience-notebook:2021-10-07

やってみる

Dockerfileの作成

datascience-notebookを元に、パッケージを追加したイメージを作成するため、Dockerfileを作成します。

今回は以下のようなDockerfileを作成しました。

Dockerfile

FROM jupyter/datascience-notebook:2021-10-07

USER ${NB_UID}

# Add Julia packages.
RUN julia -e 'import Pkg; Pkg.update()' && \
    julia -e 'import Pkg; Pkg.add("Plots")'

インストール方法は、datascience-notebookのDockerfileを参考にしました。

Jupyter Notebook Data Science Stack

また、上記はJulia環境自体の記載も多く、パッケージの追加のみを記載した例も確認したかったので、こちらは以下のSageMaker Studio Custom Image SamplesのDockerfileを参考にしました。

sagemaker-studio-custom-image-samples/Dockerfile at main · aws-samples/sagemaker-studio-custom-image-samples

ビルド・起動してみる

Dockerfileができたので、後はイメージをビルドし、起動します。

Dockerコマンドでは以下のようにできます。

## イメージをビルドする。
docker build -t nayuts/julia-custom-datascience-notebook .

## コンテナを起動する。
docker run --rm -p 8888:8888 -e JUPYTER_ENABLE_LAB=yes -v "${PWD}":/home/jovyan/work nayuts/julia-custom-datascience-notebook

docker-composeでもビルドと起動ができます。

docker-compose.yml

version: "3"
services:
    julia-custom-datascience-notebook:
        build: .
        image: nayuts/julia-custom-datascience-notebook
        volumes: 
            - ${PWD}/:/home/jovyan/work
        ports:
            - 8888:8888
        container_name: julia-custom-datascience-notebook
        environment:
            - JUPYTER_ENABLE_LAB=yes

例えば以下のようにファイルを配置し、docker-compose upでビルド・起動します。

## ファイル配置の確認
tree .
# .
# ├── Dockerfile
# ├── docker-compose.yml

## コンテナの起動。初回はイメージをビルドする。
docker-compose up

動作を確認する

JupyterLabにログインし、動作を確認します。 以下のように、Plotsを使い、グラフを描写できることが分かりました。

パッケージを追加したコンテナの確認

最後に

今回は、Jupyter Docker Stacksのdatascience-notebookにJuliaのパッケージを追加したイメージを作成しました。

JupyterでJuliaを使いたい方の参考になれば幸いです。