IPython Notebook/IJulia NotebookのDockerイメージを使ってみる

今日こんなの書きました。

R使いのためのDocker「Rocker」を使ってみる(Windows) - Technically, technophobic.

RはDockerイメージあるんだよ。進んでるでしょフフン。

とおもってたけど、、

軽くググったらIPythonにもIJuliaにもDockerイメージありました。Rが時代に遅れてただけでした。すません。ということで懺悔のつもりでこっちも記事に書きます。

Dockerホストを立てる

Windowsであれば前回の記事を参照してください。MacLinuxは、グーグル先生に聞いてください(丸投げ)。

IPythonのDockerイメージ

Github: ipython/docker-notebook · GitHub
Dockerhub: View Public Profile | Docker Hub Registry - Repositories of Docker Images

今のところ公開されているのは3つのようです。

  • ipython/scipystack - Relies on ipython/ipython, installs the scipy stack & more
  • ipython/scipyserver - Relies on ipython/scipystack, sets up a notebook server. See the README for usage instructions.
  • ipython/notebook - Relies on ipython/ipython and just sets up the IPython notebook. No additional Python packages are installed by default

これを読む感じ、ipython/scipyserverっていうやつが全部入りっぽいです。試してみます。

docker pull ipython/scipyserver

全部入りだけあって、落としてくるのはちょっと時間かかります。 落として来たら、以下のコマンドでDockerイメージを立ち上げます。 このイメージにはちょっとした小細工がしてあって、-eオプションで渡すPASSWORD環境変数でパスワードが設定されます。

docker run -d -p 443:8888 -e "PASSWORD=MakeAPassword" ipython/scipyserver

https://192.168.59.103 でアクセスできます(IPが違ったらboot2docker ipでチェック)。オレオレ証明書を使っているので警告が出ますが気にしないでください。こんなログイン画面が出るので、↑でPASSWORDに指定している文字列を入力するとログインできるはずです。

f:id:yutannihilation:20141221001242p:plain

ログインしてnotebookを開いたところ。右上のプルダウンでPython2かPython3か選べます。

f:id:yutannihilation:20141221003016p:plain

IJuliaのDockerイメージ

Github: JuliaLang/JuliaBox · GitHub
Dockerhub: tanmaykm/jboxjulia Repository | Docker Hub Registry - Repositories of Docker Images

これは、JuliaBoxというオンライン上でIJuliaを使えるサービス用に開発されているものです。 たぶんインストール手順を見れば、自分でAWSにJuliaBoxを立てちゃうこともできそうです。が、今回は深入りせずにDockerファイルだけ使います。

Julia入りのDockerイメージはtanmaykm/jboxjuliaですが、IJulia入りのはDockerhub上には上がってなさそうです。Dockerfileからビルドする必要があります。ビルドはdocker buildです。-tオプションで、ビルド後のイメージに名前を付けます。DockerfileはローカルのファイルでもURLでも指定できます。

docker build -t my_ijulia https://raw.githubusercontent.com/JuliaLang/JuliaBox/master/docker/IJulia/Dockerfile

これもけっこう時間かかります。

で、がんばった割にエラーで動かなかったりします。

$ docker run -it -p 8888:8888 ijulia /bin/bash
Error: invalid value for -l '/home/juser/.juliabox/supervisord.log': The directory named as part of the path /home/juser/.juliabox/supervisord.log does not exist.

まじかー。。たぶん、ちょっと前のコミットが変だったんじゃないかなーと思います。それでなくても、なんかこのDockerイメージは不必要な操作をしすぎていてイマイチな雰囲気が漂ってます。

もーむりっす! 諦めた。

IJuliaを試したければ、ぶっちゃけこんなことするよりJuliaBoxを使うほうがお手軽でいいと思いました(今さら)。

まとめ

  • Dockerfileによるビルドが成功するからといってそのイメージが壊れてない保証はまったくない
  • そしてそれは実際に使ってみるまで分からない

ということですね。つらい。