JupyterのDockerイメージでさくっとPython2+3環境を準備


やったこと

Jupyterは公式にDockerイメージを提供しており、
環境をDockerコンテナにより一瞬で用意できます。
今回は、そのJupyterコンテナにpython2.7カーネルを追加しました。

Jupyter

言わずもがなですが。。。

Jupyterとは、一言でいえばドキュメント共有アプリケーションです。

  • 実行可能なソースコードを統合でき、インタラクティブに実行結果を確認できる
  • ソースコードの実行結果などをビジュアライゼーションできる

という特長があり、一種のプログラミング実行環境と呼べる便利なツールです。

Jupyterのカーネル

もともと、Jupyterはpythonのインタラクティブ実行環境(IPython)が出自です。
現在は様々な言語に対応しており、カーネルを追加することで
Jupyterが対応する様々な言語のnotebookを作成可能になります。

jupyter/datascience-notebook イメージ

JupyterはDockerhubで*-notebookというイメージを公開しており
それぞれ用途ごとにインストールされているパッケージが違います。

ただ、今回使いたかったPython2.7(いまさら。。)がインストールされているイメージはなかったので
自前で対応しました。

まずは、docker-composeでさくっとJupyter環境を構築します。

version: '2.2'
services:
  jupyter:
    image: jupyter/datascience-notebook
    ports:
      - 8888:8888
    volumes:
      - ./:/home/jovyan/work
    command: start-notebook.sh --NotebookApp.token=''

--NotebookApp.token='' とすると、Webアクセス時にパスワードもトークンも入力せずに使えます。
(非推奨なのでローカルで使うときに限った方がよいです)

Jupyterが立ち上がったら、
http://localhost:8888
にアクセスします。

そして右上の[New ▼]から、新しくnotebookを作成したら

%%bash
conda create -y -n py27 python=2.7
activate py27
conda install -y notebook ipykernel && ipython kernel install --user

こんな感じののnotebookを用意します。

そして Ctrl+Enter !
※途中の進捗が出ないので少し不安感あります。
※作成するnotebookはPython3でもなんでもいいです

そして、コンテナをrestartすれば

OK!

補足

Jupyterのnotebookでは、

%%bash
ls

と書いて、bashを実行したり、

!ls

と書いて、shを実行したりできます。
今回は(おしゃれ感もあったのでw)あえてこの方法でパッケージをインストールしてみました。

まあでも↑によって、LinuxコマンドなどのドキュメントもJupyterで書けるということなんで
本当に使い道が広いなと感じます。