$30 off During Our Annual Pro Sale. View Details »

Docker との比較で知る/Quiz! Singularity

Docker との比較で知る/Quiz! Singularity

Singularity Meet-up Japan #1 May 16, 2018

ryo nakamaru

May 16, 2018
Tweet

More Decks by ryo nakamaru

Other Decks in Science

Transcript

  1. Docker との比較で知る
    Quiz! Singularity
    Singularity Meet-up Japan #1 May 16, 2018
    Ryo NAKAMARU, SUPINF Inc. / Rescale, Inc.

    View Slide

  2. 中丸 良 @pottava
    • AWS Certified Solutions Architect, DevOps Engineer - Professional
    • Google Certified Professional - Cloud Architect
    • CTO at SUPINF Inc. / Solutions Architect at Rescale, Inc.
    • クラサバ ERP → Web アプリ → クラウド → 機械学習 / HPC
    My profile
    !2

    View Slide

  3. コンテナ、みなさん使ってますか?
    !3

    View Slide

  4. Fortune 100
    !4
    29%
    71%
    Yes No
    http://redmonk.com/fryan/2017/09/10/cloud-native-technologies-in-the-fortune-100/

    View Slide

  5. とはいえ、この “コンテナ” はほとんど Docker のこと..
    !5

    View Slide

  6. (比較のために)Docker .
    • 思想:Build, Ship, and Run any app, Anywhere
    • 主に名前空間を使いアプリケーションの実行コンテキストを他から分離
    • ユーザも利害関係者も増え、標準化が進み本番利用も活発
    ‣ https://www.opencontainers.org/
    !6

    View Slide

  7. !7
    Solomon Hykes
    “ɹɹɹɹɹɹɹɹɹ ”
    To program, you need tools. If these tools are not designed to be
    accessible and useful to programmers of all levels of expertise
    and specialization, then as an industry we failed.
    “”

    View Slide

  8. VirtualMachines
    !8
    ハイパーバイザ
    ホスト OS ホスト OS
    dockerd
    containerd
    application A

    Docker
    ゲスト OS Y ゲスト OS Z
    VM と Docker コンテナ
    application B
    application C
    runc application A
    runc application B
    runc application C

    View Slide

  9. VirtualMachines
    !9
    ハイパーバイザ
    ホスト OS ホスト OS
    dockerd
    containerd
    application A

    Containers
    ゲスト OS Y ゲスト OS Z
    VM と Docker コンテナ
    application B
    application C
    runc application A
    runc application B
    runc application C
    リソースの分離が VM ほど厳密ではない
    • Docker コンテナは ホストのカーネルで 走る
    • ユーザが何も考えないと root ユーザで動く
    • ホストのリソースをほぼ 直接利用 する
    ⇨ 各種設定で縛っていく必要あり、あうー・・

    View Slide

  10. VirtualMachines
    !10
    ハイパーバイザ
    ホスト OS ホスト OS
    dockerd
    containerd
    application A

    Docker
    ゲスト OS Y ゲスト OS Z
    VM と Docker コンテナ
    application B
    application C
    runc application A
    runc application B
    runc application C
    しかもこいつは
    root で動く..

    View Slide

  11. システムコールを制限するには
    !11
    頑張って strace でトレースしてからの〜・・
    • --security-opt seccomp での制御
    • --cap-add / --cap-drop
    ‣ それぞれの Capability で制御できるシステムコールとにらめっこ
    え、つらくない?

    View Slide

  12. そんな折、Google から新星あらわる
    !12

    View Slide

  13. !13
    gVisor
    • サンドボックス環境
    • システムコールをイン
    ターセプト

    View Slide

  14. 想定用途はマルチテナントなど
    依然として Web 界隈、かつ現状限定的
    そして何より HPC 的に解決したい課題は・・
    !14

    View Slide

  15. Singularity とは

    View Slide

  16. Singularity
    • http://singularity.lbl.gov
    • Singularity = Docker のいいところ(特に再現性)+ HPC サポート
    ‣ 基本思想は一緒: Build, Ship, and Run any app, Anywhere
    ‣ 高性能ハードウェアそのまま、ジョブスケジューラもそのまま
    • DockerHub のように公式レジストリもあるよ
    ‣ https://singularity-hub.org
    !16

    View Slide

  17. 2.5.1 released
    !17

    View Slide

  18. ちょっと試したい方に

    View Slide

  19. Ubuntu 16.04
    !19
     $ sudo apt-get update
     $ sudo apt-get -y build-essential libarchive-dev python
     $ ./configure --prefix=/usr/local
     $ make
     $ sudo make install

    View Slide

  20. mac での最短お試し環境
    !20
     $ docker run --rm -it --privileged -e UID=$(id -u) -e GID=$(id -g) \
       -v /var/run/docker.sock:/var/run/docker.sock \
       -v $(pwd):/home/singularity -v /tmp:/tmp \
       -w /home/singularity \
       pottava/singularity:2.5 sh

    View Slide

  21. Quiz !

    View Slide

  22. ディレクトリのマウント
    `singularity exec some.simg ls . /tmp` で見えるものは?
    1. イメージ内のカレントディレクトリと /tmp 以下
    2. ホスト側のカレントディレクトリと /tmp 以下
    3. イメージ内のカレントディレクトリとホスト側の /tmp 以下
    4. ホスト側のカレントディレクトリとのイメージ内の /tmp 以下
    !22

    View Slide

  23. ディレクトリのマウント
    正解:ホスト側のカレントディレクトリと /tmp 以下
    Singularity ではホストの /etc/singularity.conf に設定された
    マウントオプションがすべてのコンテナに適用されます。
    デフォルトでは PROC, SYS, DEV, HOME, TMP
    !23

    View Slide

  24. リソースの競合
    すでに`singularity run nginx.simg`(Web サーバ)を実行している中
    別端末から`singularity run nginx.simg` すると何が起こる?
    1. ポートが動的にアサインされ、正常に動作する
    2. プロセスが起動せずに落ちる
    3. プロセスが起動してしばらくすると必ず落ちる
    4. プロセスが起動し、落ちるかどうかはアプリ次第
    !24

    View Slide

  25. 正解:プロセスが起動し、落ちるかどうかはアプリ次第
    Docker とは異なり、事前にホストのリソース競合状態は確認されません。
    (Docker の場合は exit code が 0 以外で落ちますよね)
    Singularity はある意味ドライに、よくいえばシンプルに責務を果たすのみ。
    !25
    リソースの競合

    View Slide

  26. プロセス 1
    `singularity exec some.simg sleep 100` を実行中、
    ホスト側から `ps a` で見えるコマンドは?
    1. `singularity exec some.img sleep 100`
    2. `sh -c “sleep 100“`
    3. `sleep 100`
    4. 見えない
    !26

    View Slide

  27. プロセス 1
    正解:`sleep 100`
    Singularity が内部的に使う execv で Singularity プロセスそのものが
    exec や run で指定したコンテナ内部のプロセスに置き換えられます。
    Docker では実行したコマンドそのままがプロセスとして走ります。
    !27
      $ ps
      PID USER COMMAND
      29619 ubuntu docker run --rm -it alpine:3.7 sleep 30

    View Slide

  28. プロセス 2
    `singularity exec some.simg ps | wc -l` が返すのは?
    1. `ps | wc -l`と同じ値
    2. `ps a | wc -l`と同じ値(自分以外のユーザーのプロセスも表示)
    3. `ps x | wc -l`と同じ値(制御端末のないプロセスの情報も表示)
    4. どれでもない
    !28

    View Slide

  29. プロセス 2
    正解:`ps ax | wc -l`+ 1 した値
    自分以外のユーザのプロセスも制御端末のないプロセスも表示され
    プロセス ID もホスト側のものがそのまま見えます。
    Docker の場合はプロセスも隔離されるのでこうなります。
    !29
      $ docker run alpine:3.7 ps
      PID USER TIME COMMAND
       1 root 0:00 ps

    View Slide

  30. Containerize your app!
    !30
    • クラウド / コンテナ を強みにした受託開発運用、コンサルティング
    • 2015 年から Docker の本番運用を開始・豊富な CI / CD 事例
    • スピンフ、と読みます・・
    We’re hiring!!!

    View Slide

  31. ご静聴ありがとうございました
    参考文献:
    • Containers for Science, Reproducibility and Mobility SINGULARITY P2     
    https://www.intel.com/content/dam/www/public/us/en/documents/presentation/hpc-
    containers-singularity-advanced.pdf
    • Singularity - Google Groups        
    https://groups.google.com/a/lbl.gov/forum/#!forum/singularity

    View Slide