Upload
tera-monagi
View
1.123
Download
4
Embed Size (px)
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
元になる Docker image(R)
11https://hub.docker.com/r/rocker/hadleyverse/
ちょろっといじったのを公開
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
元になる Docker image(Python)
17https://hub.docker.com/r/jupyter/scipy-notebook/
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