概要
Python に加えて Julia もよく使うようになってきたので、まとめてインストールできる手順を確立しておきたい。
今回はホストに Mac を使ったが、Docker をインストールしたあとのコマンドは、どの OS でもだいたい同じ。
Docker で datascience-notebook イメージを使う。
Jupyter Notebook Data Science Stack
docker-stacks
利点
- Julia, Python, R をまとめて入れられる
- どれも Jupyter のカーネルとして一元的にアクセスできる
- 動画作成に使う ffmpeg が標準で入っている
- 他のツールも入れやすい
- いつでも環境をリセットできる
Docker for Mac インストール
Get started with Docker for Mac
$ docker --version
Docker version 18.03.1-ce, build 9ee9f40
パフォーマンス関係の設定
とりあえずコンテナを起動
- パスワードなし(非推奨だが)
- コンテナ名を dsnote にする
- 数 GB のダウンロードあり
$ docker run -d -p 8888:8888 --name dsnote \
jupyter/datascience-notebook start-notebook.sh \
--NotebookApp.token=''
コンテナが起動すると、ブラウザからアクセスできる。
http://localhost:8888
Docker の基本操作
$ docker ps # 起動中のコンテナを表示
$ docker stop dsnote # コンテナを停止
$ docker ps -a # 停止中も含む全コンテナを表示
$ docker start dsnote # コンテナを再開
$ docker exec -it dsnote bash # コンテナ内の bash
% exit # bash を閉じる
$ docker stop dsnote
$ docker rm dsnote # コンテナを削除
本環境を整える
コピペ用コマンド
$ ホストのシェル
% コンテナ内のシェル
$ docker run -d -p 8888:8888 --name dsnote \
-v $(pwd):/home/jovyan/work:cached \
--user root -e GRANT_SUDO=yes \
jupyter/datascience-notebook start-notebook.sh
$ docker exec -it --user jovyan dsnote bash
% conda update -n base conda
% jupyter notebook list # token を確認
% sudo apt-get update
% sudo apt-get install zsh # 好きなものをインストールできる
Pkg.update()
Pkg.add("Plots")
using Plots
gr(size=(400, 300), fmt=:png)
ENV["PLOTS_TEST"] = "true"
x = linspace(0, 2, 100)
y = sin.(pi*x)
plot(x, y)
オプションの説明
デフォルトユーザが jovyan という名前になる
-p 8888:8888
ホスト port:8888 をコンテナ port:8888 に転送
--name dsnote
コンテナ名を指定
-v $(pwd):/home/jovyan/work:cached
ホストの現在ディレクトリをコンテナ内 /home/jovyan/work にマウント
cached は consistency を犠牲にしてパフォーマンス向上(Mac のみ?)
Performance tuning for volume mounts (shared filesystems)
--user root -e GRANT_SUDO=yes
jovyan で sudo
できるようになる
最初に token を確認してブラウザからアクセスしたら、クッキーに保存されて、二回目以降は認証が要らないので楽。
マルチプロセスのカーネルを導入
Jupyter Notebook へのカーネルの追加方法
Installing additional Julia kernels
Getting Started, Julia Manual
Parallel Map and Loops, Parallel Computing
using IJulia
# -p, --procs {N|auto}
# Integer value N launches N additional local worker processes
# "auto" launches as many workers as the number of local cores
IJulia.installkernel("Julia procs", "-p", "auto")
# カーネル変更後
procs() # プロセスのリスト
# コイントス
nheads = @parallel (+) for i = 1:200000000
Int(rand(Bool))
end
下記のファイルが自動的に生成される
/home/jovyan/.local/share/jupyter/kernels/julia-procs-0.6/kernel.json
{
"display_name": "Julia procs 0.6.2",
"argv": [
"/opt/julia-0.6.2/bin/julia",
"-i",
"--startup-file=yes",
"--color=yes",
"-p",
"auto",
"/opt/julia/v0.6/IJulia/src/../src/kernel.jl",
"{connection_file}"
],
"language": "julia"
}
自動的に再起動(5/9 追記)
PC 起動時に自動的に起動してほしい
[Docker] 起動中のコンテナに --restart=always オプションを後から適用する
Restart policies (--restart)
$ docker update --restart=unless-stopped dsnote
iTerm で自動ログイン(5/9 追記)
Julia 0.6.3 対応
自分で Dockerfile をつくった。
Plots 系 (PyPlot も含めて) ビルド済み。