Help us understand the problem. What is going on with this article?

Julia+Jupyter Notebook環境をDockerで構築

概要

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名を変更しただけです。

まとめ

  • jupyter/datascience-notebookでJulia (とR, Python) + Jupyter Notebook環境を構築
  • ボリュームをマウントしてデータを永続化
  • パッケージを自動で追加するDocker imageをDockerfileから作成
  • 作成したDockerfileをGitHubなどで共有すれば、どこでも同じ環境を構築可能

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

参考文献

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした