Reproducebility 100倍 Dockerマン

Preview:

Citation preview

Reproducebility 100 倍

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

@teramonagi(HOXO-M 所属 )

Docker マン

誰や ?

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

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

3脱ぐとスゴい ( 中性脂

肪 )

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

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

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

4

5

そこで Dockerですよ、奥さ

ん !!!

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

6

インストール

7

https://docs.docker.com/

https://docs.docker.com/

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

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

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

8

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

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

9https://hub.docker.com/

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

IMAGE を GET2. 使う

10

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

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

13

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

イメージの取得

アドホック分析 (Rstudio)

14

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

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

バッチ処理 (Rscript)

15

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

ここから先の流れ(Python)

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

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

定3. ビルドして使う

16

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系のみ)だけ

ビルド

19

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

アドホック分析 (Jupyter)

20

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

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

バッチ処理

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

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

• Docker Registry–運用頑張る

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

22

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

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

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

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

のか?23

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

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

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

24

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

25

Recommended