Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Reproducebility 100倍 Dockerマン

2,811 views

Published on

データサイエンスLT祭り 2夜目
http://data-science-lt.connpass.com/event/35412/

の資料

Published in: Technology
  • Be the first to comment

Reproducebility 100倍 Dockerマン

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

×