概要

JuliaをJupyter Notebookで使える環境を手軽に再現できるようにするため、Dockerで環境構築していきます。
Jupyter公式のDocker imageをベースにして、データの永続化やパッケージの自動追加をできるようにします。

環境

    • OS: Ubuntu 18.04

 

    Docker 18.09.8

手順

1. jupyter/datascience-notebookを取得

docker pull jupyter/datascience-notebook

2. コンテナを起動

docker run \
       -p 8888:8888 \
       --user root \
       --name mynotebook \
       jupyter/datascience-notebook

-pでポート番号、–userでユーザーの指定が必要です。コンテナ名の指定–nameは任意です。

3. Jupyter Notebookにアクセス

To access the notebook, open this file in a browser:
        file:///home/jovyan/.local/share/jupyter/runtime/nbserver-17-open.html
Or copy and paste one of these URLs:
        http://df19b359c643:8888/?token=xxxxx
     or http://127.0.0.1:8888/?token=xxxxx

表示されたURLをブラウザで開くとJupyter Notebookが使えます。
ちなみにJuliaだけでなくRとPythonも使用可能です。Jupyter公式のDocker imageについてはこのページが詳しいです。

データの永続化

このままではコンテナでの作業が保存されないので、ローカルのディレクトリをマウントします。

docker run -p 8888:8888 \
           -v ~/path/to/directory:/home/jovyan/work \
           --user root \
           --name mynotebook \
           jupyter/datascience-notebook

-vでマウントするディレクトリを指定します。ちなみにデフォルトユーザー名であるjovyanとはjupyterを使う人というような意味のようです。

パッケージの追加を自動化

1. Dockerfileの作成

よく使うパッケージを自動で追加できるようにちょっとしたDockerfileを作成します。
例としてPlotsとDifferentialEquationsを追加してみます。

FROM jupyter/datascience-notebook
MAINTAINER yoshikiri

# Plotsを追加
RUN julia -e 'using Pkg; Pkg.add("Plots"); using Plots'

# DifferentialEquationsを追加
RUN julia -e 'using Pkg; Pkg.add("DifferentialEquations"); using DifferentialEquations'

REPLを起動せずコマンドでjulia文を実行するには-eオプションを使います。

julia -e 'println("hello, julia")'

2. DockerfileからDocker imageを作成

docker build -t notebook .

上記コマンド実行後、新たにDocker imageが作成されたことが確認できます。imageのバージョンを指定しないとlatestになります。

$ docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
notebook                       latest              4233009a8db5        1 minutes ago      5.77GB

3. Docker imageからコンテナを起動

docker run -p 8888:8888 \
           -v ~/path/to/directory:/home/jovyan/work \
           --user root \
           --name mynotebook \
           notebook

最後のimage名を変更しただけです。

4. コンテナの停止、再起動

コンテナ停止は次のコマンドです。

docker stop mynotebook

一度コンテナを作成すれば、以降は次のコマンドで表示されるURLにアクセスすればJupyter Notebookを起動できます。

docker start mynotebook
docker exec -it mynotebook jupyter notebook list

まとめ

    • jupyter/datascience-notebookでJulia (とR, Python) + Jupyter Notebook環境を構築

 

    • ボリュームをマウントしてデータを永続化

 

    • パッケージを自動で追加するDocker imageをDockerfileから作成

 

    作成したDockerfileをGitHubなどで共有すれば、どこでも同じ環境を構築可能

意見や間違いがあればコメントで教えていただけると大変ありがたいです。

参考文献

    • Dockerで基本的なData Science環境(Jupyter, Python, R, Julia, 定番ライブラリ)を構築する。

 

    Dockerfileを書いてみる
广告
将在 10 秒后关闭
bannerAds