つまりなにしたの?
Jupyter Docker Stacksを導入したはいいもののうっかりコンテナを削除すると辛いのでDocker-composeを使って
ホストとコンテナのボリュームを共有することにした。扱うイメージはjupyter/datascience-notebook
Jupyter Docker Stacksについて
JupyterをDocker上で動かして、どこでも同じ分析環境を展開できるようなもの。
ensekitt.hatenablog.com
詳しくはこちら
docker-composeについて
docker-composeは、複数コンテナを使ったDockerアプリケーションを定義して実行するためのツール。
たとえば、学習サーバと実行サーバを毎回同じ構成で立ち上げたい時に使う。
今回は一つのコンテナを立ち上げるために使うけど、立ち上げるためのオプションを設定できることを強みとして使う。
docs.docker.com
環境について
すでにインストール済とする。
docs.docker.com
以降の環境は
Docker CE Version 18.06.0-ce-mac70 (26399) Engine: 18.06.0-ce Compose: 1.22.0 Machine: 0.15.0 Notary: 0.6.1 Credential Helper: 0.6.0 Kubernetes: v1.10.3
でできている。
なお、Dockerのバージョン確認は
ここからできる。
ディレクトリ構造
作業用のディレクトリを作成する。すべてこの中で閉じるのでありがたい。
% tree . . └── docker-compose.yaml
一旦こんなディレクトリを作る
docker-compose.yaml
中身はこんな感じ
version: '3' services: env: image: jupyter/datascience-notebook environment: LANG: C.UTF-8 expose: - "8888" ports: - "8888:8888" volumes: - ./:/home/jovyan/
imageのところにほかのイメージ名を入れて、
volumesを対象のイメージのログインした時に入るパスに変更すれば、
jupyter docker stacks以外でも同じように使える。
jovyanとは誰か
JupyterNotebookを起動するとホームディレクトリはjovyanさんの名前で作られている。
こいつだれ?って思ったので調べてみたら、
Jovianには木星(Jupiter)の〜みたいな意味があって、
それのJupyter版ということでJovyanになったようだ。
つまり、JovyanはJupyterの住人ってことみたい。
github.com
実行してみる
% docker-compose up
同じくトークン付きで起動してみると、ちゃんと使えた。
内部のファイルをいじる
ディレクトリやNotebookを作ってみた。
ローカルディレクトリも更新された
% tree . . ├── Untitled.ipynb ├── db └── docker-compose.yaml
停止し、うっかりコンテナを削除してみる。
Ctrl+c # 停止中のコンテナを確認 % docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3d6870fe7128 jupyter/datascience-notebook "tini -g -- start-no…" 7 minutes ago Exited (137) 4 seconds ago datasci_env_1 # 削除してみる % docker-compose down #もしくは % docker rm datasci_env_1 # 削除を確認 % docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
再開してみる
% docker-compose up
中身は無事だった。
おわりに
これで、ローカルにもファイルを置いて管理することができるようになった。
ipynbはGitで管理しにくいけど、Githubならプレビューも出してくれるのでそういうものと連携するのもやりやすくなったと思う。
起動コマンドもシンプルになって良い。