non vorrei lavorare

昔はおもにプログラミングやガジェット系、今は?

DockerでIPython Notebookを動かして、数え上げおねえさんを救う

こんばんは、週末は寒くなってきてからか、はたまた、体調不良の前触れか、長男がべったりくっついていることが多かった@kjunichiです。

 

はじめに

以前に話題になった、組み合わせを数え上げるおねえさんの動画。長男と一緒に何度か観ました。 ちょっと数が増えるとその組み合わせが爆発的に増加するという話。この動画で最新のアルゴリズムではもっと早く数えられるとありましたが、当時はまさか、それがPythonで実装されてgithubに公開されてるなんて思いもしませんでした。今週末、たまたま、プラレールYoutubeばかり見えていると奥さんに怒られると思い、たまには、勉強をということで、見返したら、関連動画からGraphillionの存在を知ることが出来ました。

GraphillionをDockerで動かすまで

GraphillionはPython3は非対応

GraphillionはPython 3 support · Issue #13 · takemaru/graphillionにあるようにPython2.x系でのみ動く模様。

Dockerの既存のIPython Notebookイメージ

python2系のIPython Notebookの以下のイメージを使って作業を進める。 ipython/notebook Repository | Docker Hub Registry - Repositories of Docker Images

Notebookでシェルコマンド

!を付ければ良い、ただし、インタラクティブモードに注意

!apt-get install -y gfortran

といった感じで決して入力したコマンドが標準入力からの入力を待たないようにしないといけない。

必要なライブラリ

!apt-get install -y libpng12-dev libfreetype6-dev gfortran

必要なPythonモジュール

!pip install numpy
!easy_install networkx
!easy_install matplotlib

python本体の再起動

quit()

カーネルが再起動される。

Notebookにグラフを貼るには

%matplotlib inline

GraphillionをNotebookで試す

Graphillionを試すNotebookを作った、これをDLして使うことで、Graphillionを試すことが出来る。 http://nbviewer.ipython.org/gist/kjunichi/9e77493c41fdfe0d8f20/Graphillion.ipynb

Dockerのコンテナを保存する

docker commit <<コンテナID>> kjunichi/notebook

コミットしたコンテナを起動する

既存のコンテナを止める

docker stop <<コンテナID>>

コミットした新しいイメージを元にコンテンを起動する

docker run -d -p 443:8888 -e "PASSWORD=MakeAPassword" kjunichi/notebook

Link

まとめ

前々から気になっていたが、イマイチ使えなかったIPython NotebookやPythonのパッケージ管理に関して今回のおねえさんを救うミッションを通じで一気に知識を深めることが出来た。

今回の記事の方法では、Dockerfileを一切編集していないが、もちろん、Dockerfileを編集して、必要なパッケージをインストールしてから使う方法もありだと思うが、IPython Notebookの場合、あれこれやってみて、後からパッケージが必要になるユースケースの方が圧倒的に多いと考え、今回のDockerfileを編集しない方法を記事にした。

関連記事

 

4年前の記事

1年前の記事