LoginSignup
25
15

More than 3 years have passed since last update.

Julia+Jupyter Notebook環境をDockerで構築

Last updated at Posted at 2019-07-28

概要

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を作成します。
例としてPlotsDifferentialEquationsを追加してみます。

Dockerfile
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などで共有すれば、どこでも同じ環境を構築可能

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

参考文献

25
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
15