Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Docker マトリョーシカ

Tori Hara
PRO
September 14, 2015

Docker マトリョーシカ

あなたもわたしも Docker in Docker.

続編あり〼 https://toris.io/2015/12/we-should-think-twice-about-using-docker-in-docker/

Tori Hara
PRO

September 14, 2015
Tweet

More Decks by Tori Hara

Other Decks in Technology

Transcript

  1. Docker マトリョーシカ
    Yasuhiro HARA
    JAWS-UGコンテナ支部 #2 LT @ 目黒
    #jawsug_ct

    View Slide

  2. Yasuhiro HARA ♥
    / toricls

    View Slide

  3. LT の内容
    Docker + CI

    View Slide

  4. 例として Jenkins が
    出てきますが
    他の CI や開発環境でも
    (たぶん)使える話

    View Slide

  5. ࣗલ؅ཧͷ CI ͰΑ͘ࠔΔ͜ͱ

    View Slide

  6. View Slide

  7. たくさんのリポジトリ

    たくさんの依存関係

    View Slide

  8. Docker

    が解決してくれるかも

    View Slide

  9. master
    slave
    ruby 2.0
    slave
    ruby 2.1

    View Slide

  10. - evarga/jenkins-slave (Docker Hub)
    https://hub.docker.com/r/evarga/jenkins-slave/
    - Jenkins Docker Plugin
    https://wiki.jenkins-ci.org/display/JENKINS/Docker+Plugin
    参考: Jenkins Slave in Docker

    View Slide

  11. となると今度は
    master
    slave
    ruby 2.0
    slave
    ruby 2.1
    面倒な依存管理から
    解放された!

    View Slide

  12. この中で docker build とか
    docker push とかしたい
    slave
    ruby 2.0
    master
    slave
    ruby 2.1

    View Slide

  13. slave
    ruby 2.0
    依存関係がキレイに管理された環境でテストを
    ぐりぐり回して docker build して出来上がっ
    たイメージを docker push したら Web フック
    でデプロイが走ってうふふふふ…

    View Slide

  14. Docker コンテナの中で docker を
    インストールして試してみた
    ダメポヨ

    View Slide

  15. やれます

    View Slide

  16. - jpetazzo/dind (GitHub)
    https://github.com/jpetazzo/dind
    - Docker can now run within Docker | Docker
    Blog
    http://blog.docker.com/2013/09/docker-can-now-run-
    within-docker/
    参考: Docker in Docker
    いろいろ工夫されてるので
    見てみると面白いかも

    View Slide

  17. --privileged
    - Docker コンテナの中からホストマシンの全デバイスにアクセスできる特権モード
    - SELinux + Docker でマウントしたディレクトリへのアクセスの文脈でよく出てくる
    - 実は Docker 0.9 から用意されているオプション
    - 製品/サービスの本番環境とかでは使わなくて済むように環境が構築される方が無難
    イケてる docker run オプション

    View Slide

  18. D-in-D を試してみた
    [email protected]:~/$ docker run -it --privileged jpetazzo/dind:latest
    [email protected]:/# docker run -it --privileged jpetazzo/dind:latest
    Unable to find image 'jpetazzo/dind:latest' locally
    ~ 省略 ~
    [email protected]:/# docker run -it --privileged jpetazzo/dind:latest
    Unable to find image 'jpetazzo/dind:latest' locally
    ~ 省略 ~
    [email protected]:/# exit
    [email protected]:/# exit
    [email protected]:/# exit
    [email protected]:~/$

    View Slide

  19. D-in-D で注意したいこと
    docker rm しても /var/lib/docker にデータが
    残るため、ディスク使用量が増え続ける
    → chadoe/docker-cleanup-volumes とか使う
    https://github.com/chadoe/docker-cleanup-volumes

    View Slide

  20. - tehranian/dind-jenkins-slave (GitHub)
    https://github.com/tehranian/dind-jenkins-slave
    参考: D-in-D for Jenkins
    docker コマンドが実行可能な
    Dockerized Jenkins スレーブを
    サクッと動かせるみたいです

    View Slide

  21. - toricls/dind-gitlab-ci (GitHub)
    https://github.com/toricls/dind-gitlab-ci
    参考: D-in-D for GitLab CI
    GitLab CI で簡単に
    Docker in Docker を
    実現できます

    View Slide


  22. Thank you :)

    View Slide