Docker Meetup Tokyo #6
Dockerで
Jupyter使おうぜ
谷沢 智史(株式会社ボイスリサーチ)
誰?
谷沢 智史
◦ 株式会社ボイスリサーチ エンジニア
◦ GitHub/Twitter: @yacchin1205
昔: オンラインゲームとか映像コンテンツとか
今: クラウド運用とかロボットとか
国立情報学研究所(NII)でプライベートクラウドの運用支援
Literate Computing
for Reproducible Infrastructure
NIIにおけるベアメタルクラウド上の環境構築/運用に…
Jupyter(旧IPython) + Ansible
実行コード
説明
実行結果
をNotebookとして、
ひとまとめに記述
Literate Computing
for Reproducible Infrastructure
Notebook中にAnsible呼び出しを記述/コードの前後に説明を書いたり
Literate Computing
for Reproducible Infrastructure
見出しをつけていくことで長い手順もわかりやすくしたり
Literate Computing
for Reproducible Infrastructure
操作の証跡になる
繰り返しおこなうものは手順書として洗練していく
Literate computing for reproducible infrastructure - our basic practices
in a video capture -
◦ http://www.slideshare.net/nobu758/literate-computing-for-reproducible-
infrastructure-our-basic-practices-in-a-video-capture
Jupyter
簡単にお試しできるJupyter Notebook環境
https://tmpnb.org
Jupyter
Mar 2 07:43:46 datalab-deploy-... startupscript: Step creating network datalab succeeded.
Mar 2 07:43:47 datalab-deploy-... startupscript: Creating Datalab application...
…
Mar 2 07:43:47 datalab-deploy-... startupscript: - Build (and pull) docker container
Mar 2 07:43:48 datalab-deploy-... startupscript: Sending build context to Docker daemon
6.656 kB#015#015
Mar 2 07:43:48 datalab-deploy-... startupscript: Sending build context to Docker daemon #015
Mar 2 07:43:48 datalab-deploy-... startupscript: Step 0 : FROM gcr.io/cloud_datalab/datalab
Mar 2 07:43:48 datalab-deploy-... startupscript: latest: Pulling from
gcr.io/cloud_datalab/datalab
Mar 2 07:43:48 datalab-deploy-... startupscript: 77e39ee82117: Pulling fs layer
Mar 2 07:43:48 datalab-deploy-... startupscript: 5eb1402f0414: Pulling fs layer
…
Mar 2 07:44:24 datalab-deploy-... startupscript: 557148c7feb7: Pull complete
Mar 2 07:44:24 datalab-deploy-... startupscript: Digest:
sha256:0353b7d5c629162465bb8b98c8838e190ad73d03c052e4dbff1c2274e3e78645
Mar 2 07:44:24 datalab-deploy-... startupscript: Status: Downloaded newer image for
gcr.io/cloud_datalab/datalab:latest
Mar 2 07:44:24 datalab-deploy-... startupscript: ---> 557148c7feb7
Mar 2 07:44:24 datalab-deploy-... startupscript: Successfully built 557148c7feb7
Mar 2 07:44:24 datalab-deploy-... startupscript: Step build container succeeded.
…
インフラのオペレーションで使うには・・・
Privateな環境で動かしたい
Jupyter
Decoupled Two-Process model
Client Kernel
Web
Notebook
Console
Qt Console
Python2
Kernel
Python3
Kernel
Bash
Kernel
...
ZeroMQ
Client Kernel
Web
Notebook
Console
Qt Console
Python2
Kernel
Python3
Kernel
Bash
Kernel
...
ZeroMQ
Jupyter
いろいろなKernel
https://github.com/ipython/ipython/wiki/IPython-kernels-for-other-languages
Client Kernel
Web
Notebook
Console
Qt Console
Python2
Kernel
Python3
Kernel
Bash
Kernel
...
ZeroMQ
Jupyter
ツールもいろいろ
Client Tools
Jupyter
Notebook Extensionsもいろいろ
UI周りもどんどん更新 ... 構築・維持とかやってられない
Client Kernel
Web
Notebook
Console
Qt Console
Python2
Kernel
Python3
Kernel
Bash
Kernel
...
ZeroMQ
Extension
Extension
Extension
docker-stacks
https://github.com/jupyter/docker-stacks
docker-stacksをベースに必要ツールを
インストール・イメージ化すれば管理が楽!
運用者ごとにJupyter
講義用環境の構築 ... 講師ごとに環境を用意したい
tmpnbが使えるんじゃね?
tmpnb
一時的なJupyter Notebook環境の生成をDockerで実現
https://github.com/jupyter/tmpnb
tmpnb - Quick start
1. tmpnb, configurable-http-proxy コンテナを起動する
◦ 勝手にJupyter Notebookが起動される
2. http://docker-host:8000/ を開く
いろいろカスタマイズできる!
docker pull jupyter/minimal-notebook
export TOKEN=$( head -c 30 /dev/urandom | xxd -p )
docker run --net=host -d -e CONFIGPROXY_AUTH_TOKEN=$TOKEN --name=proxy 
jupyter/configurable-http-proxy 
--default-target http://127.0.0.1:9999
docker run --net=host -d -e CONFIGPROXY_AUTH_TOKEN=$TOKEN --name=tmpnb 
-v /var/run/docker.sock:/docker.sock jupyter/tmpnb
まとめ
ツール盛り合わせフロント環境の管理・運用は
Dockerじゃないとできない
運用の手順や証跡管理に、Jupyterどうっすか?

DockerでJupyter使おうぜ

Editor's Notes

  • #2 (タイトル)という題で発表させていただきます。
  • #3 ボイスリサーチの谷沢といいます。白いロボットの技術書とか書いているんですけど、最近は割と国立情報学研究所というところでクラウドの運用のお手伝いをやらせていただいてます。
  • #4 で、NIIでは、Literate Computing for Reproducible Infrastructureと銘打って、Jupyter、昔はIpythonといいましたが、これとAnsibleを組み合わせて、運用の作業をコード化しつつ、実行結果や説明もひとまとめのドキュメントとしても残して活用していくという試みをしています。
  • #5 Web UIベースで、個々のコードのすぐそばに経緯などもかけるので、あとでなんでこれやったんだっけ?みたいなことも割と少なくて済む気がします。
  • #6 説明にはMarkdownが書けるので、必要な見出しを入れていくとか
  • #7 詳しくはビデオなど公開していますので見てください。
  • #8 そんな感じで、もともとデータ分析みたいな部分で使われているJupyterをインフラ運用にも使ってみているわけです。 ぜひご存じない方はtmpnb.orgにアクセスしてみてください。Jupyter環境のお試しができます。 実はこれはDockerでNotebook環境を管理しています。
  • #9 JupyterはGoogle Cloud Platformのサービスにも組み込まれています。 実はCloud DataLabもDockerが使われていて、デプロイ時のログにもよく見る出力が流れていて熱いです。 自分たちのようなオペレーション用途で使ってみようとすると、その操作対象と同じ、Privateな環境で動かしたくなります。
  • #10 JupyterというかIPythonは、もともとWeb UIだけでなく、コマンドベースの対話環境みたいなものを実現するためのツールで、実行可能な言語もPythonには限りません。 基本的にはUI周りはClient, 処理はKernelとして分離されています。
  • #11 Kenr
  • #12 Kernelから、運用に必要なツールが実行できるようインストールしておいたり、
  • #13 Web UIが利用しやすいようにExtensionを追加したくなります。 しかもこれらはどんどんアップデートされていきます。