reproducebility 100倍 dockerマン
TRANSCRIPT
![Page 1: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/1.jpg)
Reproducebility 100 倍
データサイエンス LT 祭り 2 夜目
@teramonagi(HOXO-M 所属 )
Docker マン
![Page 2: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/2.jpg)
誰や ?
![Page 3: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/3.jpg)
俺や• ID: @teramonagi• 職種:データ分析おじさん• 業務:バッチ運用・ emoticon
作成• 言語: /R/Python/Scala/F#/• 趣味:ドラム & メジャーデビュー
3脱ぐとスゴい ( 中性脂
肪 )
![Page 4: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/4.jpg)
モチベーション• 手元の結果と分析サーバでの結果が違う!–OS ・ライブラリのバージョンも全部あって
る!なんでや!• 異なるサーバに分析環境整備するの面倒• アドホックな分析環境とバッチサーバ環境が
揃ってない!• 皆作業環境がバラバラや!– “ ワタシのところで動かない!” – “ こういうエラーが出ました!”– ・・・いちいち煩い
4
![Page 5: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/5.jpg)
5
そこで Dockerですよ、奥さ
ん !!!
![Page 6: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/6.jpg)
Docker とは• ホスト OS 上に仮想的に別のOS( ゲスト ) を動かすためのコンテナ型仮想化技術• 性能劣化がほとんどない• 仮想マシンの作成や起動が速い• ディスク使用量が小さい
6
![Page 7: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/7.jpg)
インストール
7
https://docs.docker.com/
https://docs.docker.com/
![Page 8: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/8.jpg)
インストール• 最近、 Docker for(Windows|Mac)
というツールが出た–使えるならこいつが Good
•Windows 10(Home 版 ) だとダメなので Docker tools ってのを使う–ただし VirtualBox 経由なので速度がイマイチ
8
![Page 9: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/9.jpg)
Docker Hub• Github ぽく、いろんな Dockerfile( レシピ
的なもん ) が公開されている
9https://hub.docker.com/
![Page 10: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/10.jpg)
ここから先の流れ (R)1. Docker Hub からベースになる
IMAGE を GET2. 使う
10
![Page 11: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/11.jpg)
元になる Docker image(R)
11https://hub.docker.com/r/rocker/hadleyverse/
![Page 12: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/12.jpg)
ちょろっといじったのを公開
12https://hub.docker.com/r/tokyor/rstudio/
![Page 13: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/13.jpg)
13
# tokyor image の取得$ docker pull tokyor/rstudio
イメージの取得
![Page 14: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/14.jpg)
アドホック分析 (Rstudio)
14
# Rstudio server 起動# Rstudio ユーザ直下のディレクトリを自分のローカルのホームと重ねると便利$ docker run -d -p 8787:8787 -v ~:/home/rstudio tokyor/rstudio
ブラウザから localhost:8787 に接続し、ユーザ名・パス共に rstudio でログイン可
![Page 15: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/15.jpg)
バッチ処理 (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マン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/16.jpg)
ここから先の流れ(Python)
1. Docker Hub からベースになるIMAGE を GET
2. 必要に応じたカスタマイズ1. 日本 ( 語 ) 対応2. ライブラリ / パッケージの指
定3. ビルドして使う
16
![Page 17: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/17.jpg)
元になる Docker image(Python)
17https://hub.docker.com/r/jupyter/scipy-notebook/
![Page 18: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/18.jpg)
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マン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/19.jpg)
ビルド
19
# Dockerfile を作成したディレクトリで以下を実行# -t オプションはイメージの名前なので適当で OK# 結構待つ(はず)$ docker build -t local/jupyter .
![Page 20: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/20.jpg)
アドホック分析 (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マン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/21.jpg)
バッチ処理
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マン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/22.jpg)
( 社内などの ) プライベート環境での管理
• Docker Registry–運用頑張る
•💵で–Docker Hub–Google Container Registry–Amazon EC2 Container Registry
22
![Page 23: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/23.jpg)
よくわかってない&困っていること
• マルチユーザの管理–パスワード管理含め考えるのが超面倒–というかどうしたらいいの、僕…
• パスワードなどの受け渡し–環境変数で本当にいいのか…?
• ホストとの結果の連携–結局、ボリュームマッピングで OK な
のか?23
![Page 24: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/24.jpg)
まとめ• Docker を使うと、分析サーバ・同
僚などとの間での分析環境の共有が容易に• 計算結果の担保もしやすくなる• データ分析用の Dockerfile はよくで
きてるので、それをちょいといじればよい• 管理・運用はガンバレ
24
![Page 25: Reproducebility 100倍 Dockerマン](https://reader038.vdocuments.site/reader038/viewer/2022102821/587199a21a28ab044e8b56b5/html5/thumbnails/25.jpg)
お元気で。Have a happy data analysis life!
25