25
Reproducebility 100 倍 デデデデデデデデ LT デデ 2 デデ @teramonagi (HOXO-M 倍倍 ) Docker 倍倍

Reproducebility 100倍 Dockerマン

Embed Size (px)

Citation preview

Page 1: Reproducebility 100倍 Dockerマン

Reproducebility 100 倍

データサイエンス LT 祭り 2 夜目

@teramonagi(HOXO-M 所属 )

Docker マン

Page 2: Reproducebility 100倍 Dockerマン

誰や ?

Page 3: Reproducebility 100倍 Dockerマン

俺や• ID: @teramonagi• 職種:データ分析おじさん• 業務:バッチ運用・ emoticon

作成• 言語: /R/Python/Scala/F#/• 趣味:ドラム & メジャーデビュー

3脱ぐとスゴい ( 中性脂

肪 )

Page 4: Reproducebility 100倍 Dockerマン

モチベーション• 手元の結果と分析サーバでの結果が違う!–OS ・ライブラリのバージョンも全部あって

る!なんでや!• 異なるサーバに分析環境整備するの面倒• アドホックな分析環境とバッチサーバ環境が

揃ってない!• 皆作業環境がバラバラや!– “ ワタシのところで動かない!” – “ こういうエラーが出ました!”– ・・・いちいち煩い

4

Page 5: Reproducebility 100倍 Dockerマン

5

そこで Dockerですよ、奥さ

ん !!!

Page 6: Reproducebility 100倍 Dockerマン

Docker とは• ホスト OS 上に仮想的に別のOS( ゲスト ) を動かすためのコンテナ型仮想化技術• 性能劣化がほとんどない• 仮想マシンの作成や起動が速い• ディスク使用量が小さい

6

Page 7: Reproducebility 100倍 Dockerマン

インストール

7

https://docs.docker.com/

https://docs.docker.com/

Page 8: Reproducebility 100倍 Dockerマン

インストール• 最近、 Docker for(Windows|Mac)

というツールが出た–使えるならこいつが Good

•Windows 10(Home 版 ) だとダメなので Docker tools ってのを使う–ただし VirtualBox 経由なので速度がイマイチ

8

Page 9: Reproducebility 100倍 Dockerマン

Docker Hub• Github ぽく、いろんな Dockerfile( レシピ

的なもん ) が公開されている

9https://hub.docker.com/

Page 10: Reproducebility 100倍 Dockerマン

ここから先の流れ (R)1. Docker Hub からベースになる

IMAGE を GET2. 使う

10

Page 12: Reproducebility 100倍 Dockerマン

ちょろっといじったのを公開

12https://hub.docker.com/r/tokyor/rstudio/

Page 13: Reproducebility 100倍 Dockerマン

13

# tokyor image の取得$ docker pull tokyor/rstudio

イメージの取得

Page 14: Reproducebility 100倍 Dockerマン

アドホック分析 (Rstudio)

14

# Rstudio server 起動# Rstudio ユーザ直下のディレクトリを自分のローカルのホームと重ねると便利$ docker run -d -p 8787:8787 -v ~:/home/rstudio tokyor/rstudio

ブラウザから localhost:8787 に接続し、ユーザ名・パス共に rstudio でログイン可

Page 15: Reproducebility 100倍 Dockerマン

バッチ処理 (Rscript)

15

# 適当な R ファイルを生成$ echo "print(‘Hello, world’)" > hoge.R# Docker を起動# ボリュームマッピングでファイルのパスを指定$ docker run -v `pwd`:/host tokyor/rstudio Rscript /host/hoge.R[1] "Hello, world"

Page 16: Reproducebility 100倍 Dockerマン

ここから先の流れ(Python)

1. Docker Hub からベースになるIMAGE を GET

2. 必要に応じたカスタマイズ1. 日本 ( 語 ) 対応2. ライブラリ / パッケージの指

定3. ビルドして使う

16

Page 18: Reproducebility 100倍 Dockerマン

Dockerfile を書く

18

FROM jupyter/scipy-notebookUSER root# Set local for JapaneseRUN apt-get install -y locales && \ echo "ja_JP.UTF-8 UTF-8" >> /etc/locale.gen && \ /usr/sbin/locale-gen ja_JP.UTF-8 && \ /usr/sbin/update-locale LANG=ja_JP.UTF-8USER $NB_USER# set localENV LANG=ja_JP.UTF-8ENV LANGUAGE=ja_JP.UTF-8ENV LC_ALL=ja_JP.UTF-8# Install Python 3 packagesRUN conda install --quiet --yes \ 'boto3' \ && conda clean -tipsyRUN pip3 install xgboost

日本語環境設定・適当なパッケージインストール(面倒なので3系のみ)だけ

Page 19: Reproducebility 100倍 Dockerマン

ビルド

19

# Dockerfile を作成したディレクトリで以下を実行# -t オプションはイメージの名前なので適当で OK# 結構待つ(はず)$ docker build -t local/jupyter .

Page 20: Reproducebility 100倍 Dockerマン

アドホック分析 (Jupyter)

20

# Juupyter Notebook の起動# Docker 内の作業ディレクトリを自分のローカルのホームと重ねると便利# Port のマッピングは適当で OK (ゲスト側は 8888 MUST)$ docker run -d -p 8888:8888 -v ~:/home/jovyan/work local/jupyter

ブラウザから localhost:8888 に接続

Page 21: Reproducebility 100倍 Dockerマン

バッチ処理

21

# 適当なファイルを生成$ echo "print('Hello, world')" > hoge.py# 実行$ docker run -v `pwd`:/host local/jupyter /bin/sh -c '${CONDA_DIR}/bin/python3 /host/hoge.py'Hello, world

Page 22: Reproducebility 100倍 Dockerマン

( 社内などの ) プライベート環境での管理

• Docker Registry–運用頑張る

•💵で–Docker Hub–Google Container Registry–Amazon EC2 Container Registry

22

Page 23: Reproducebility 100倍 Dockerマン

よくわかってない&困っていること

• マルチユーザの管理–パスワード管理含め考えるのが超面倒–というかどうしたらいいの、僕…

• パスワードなどの受け渡し–環境変数で本当にいいのか…?

• ホストとの結果の連携–結局、ボリュームマッピングで OK な

のか?23

Page 24: Reproducebility 100倍 Dockerマン

まとめ• Docker を使うと、分析サーバ・同

僚などとの間での分析環境の共有が容易に• 計算結果の担保もしやすくなる• データ分析用の Dockerfile はよくで

きてるので、それをちょいといじればよい• 管理・運用はガンバレ

24

Page 25: Reproducebility 100倍 Dockerマン

お元気で。Have a happy data analysis life!

25