動機
Pythonでデータ分析をする環境が欲しいだけなのに、なんちゃらenvとかやってるうちに気力が萎えてしまう
2018年03月追記
Colaboratory という素晴らしいサービスが出ております。ちょっと触るくらいなら断然こちらが簡単です!
https://colab.research.google.com/
前提
既にdocker
とdocker-compose
が使えるようになっているとします。
手順
FROM jupyter/datascience-notebook
MAINTAINER Kenta Mukai
RUN pip install jupyterlab
RUN jupyter serverextension enable --py jupyterlab
追加でインストールしたいpythonのライブラリがあれば、
RUN pip install jupyterlab
の下に書き加えてください。
notebookを置くためのdirectoryを作っておきます。
$ mkdir work
オプションが多いのでdocker-composeを書きます。
version: "2"
services:
jupyterlab:
build:
context: .
user: root
ports:
- "80:8888"
volumes:
- "./work:/home/jovyan/work" # ← notebookをホストと共有したいためディレクトリをマウント
environment:
NB_UID: 500 # ← 作業するユーザーのUID 私の環境では500だったので500を指定
GRANT_SUDO: "yes"
command: start.sh jupyter lab
コンテナを実行します
# docker-compose build
# docker-compose up
jupyterlab_1 | Copy/paste this URL into your browser when you connect for the first time,
jupyterlab_1 | to login with a token:
jupyterlab_1 | http://localhost:8888/?token=8669f6fc0b665b67a5e08017c6728976cb41558a46ce561a
コンソールにこのような出力が出るので、tokenをコピーしておきます。
ブラウザで80 portを開くと...
開きました。
先ほどのtokenでログインできます。
パスワードの設定
パスワードを設定するにはJupyterLab上で下記を実行して
from IPython.lib import passwd
passwd()
SHA1
の文字列が得られるので
sha1:c54efc741400:0e148aaf9a0d376f86742e68f89b7a95b395c35c
この文字列を起動時に渡すようにしてやります。
こうなります。
version: "2"
services:
jupyterlab:
build:
context: .
user: root
ports:
- "80:8888"
volumes:
- "./work:/home/jovyan/work"
environment:
NB_UID: 500
GRANT_SUDO: "yes"
command: start.sh jupyter lab --NotebookApp.password='sha1:c54efc741400:0e148aaf9a0d376f86742e68f89b7a95b395c35c'
# docker-compose up -d
これで設定したパスワードでログインできるようになりました
使ってみる
DockerイメージのFROMであるjupyter/datascience-notebook
には、 NumPy
やPandas
などデータ分析に関するパッケージが一通り含まれているので、すぐに使い始めることができます。どんなものが同梱されているか詳しくは最後のリンクを参照ください。
workディレクトリを作っておいたので、ここに既存のnotebookやCSVのデータを置くと、JupyterLabのhomeに出てきて便利です。
リンク
Jupyter Notebook Data Science Stack
https://github.com/jupyter/docker-stacks/tree/master/datascience-notebook
JupyterLab
https://github.com/jupyterlab/jupyterlab