Docker マトリョーシカ

84907687e50c8ac2a09b02e0d1b36ab1?s=47 toricls
September 14, 2015

Docker マトリョーシカ

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

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

84907687e50c8ac2a09b02e0d1b36ab1?s=128

toricls

September 14, 2015
Tweet

Transcript

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

  2. Yasuhiro HARA ♥ / toricls

  3. LT の内容 Docker + CI

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

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

  6. None
  7. たくさんのリポジトリ と たくさんの依存関係

  8. Docker が解決してくれるかも

  9. master slave ruby 2.0 slave ruby 2.1

  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
  11. となると今度は master slave ruby 2.0 slave ruby 2.1 面倒な依存管理から 解放された!

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

    master slave ruby 2.1
  13. slave ruby 2.0 依存関係がキレイに管理された環境でテストを ぐりぐり回して docker build して出来上がっ たイメージを docker

    push したら Web フック でデプロイが走ってうふふふふ…
  14. Docker コンテナの中で docker を インストールして試してみた ダメポヨ

  15. やれます

  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 いろいろ工夫されてるので 見てみると面白いかも
  17. --privileged - Docker コンテナの中からホストマシンの全デバイスにアクセスできる特権モード - SELinux + Docker でマウントしたディレクトリへのアクセスの文脈でよく出てくる -

    実は Docker 0.9 から用意されているオプション - 製品/サービスの本番環境とかでは使わなくて済むように環境が構築される方が無難 イケてる docker run オプション
  18. D-in-D を試してみた orih@macbook.local:~/$ docker run -it --privileged jpetazzo/dind:latest root@a227639b9373:/# docker

    run -it --privileged jpetazzo/dind:latest Unable to find image 'jpetazzo/dind:latest' locally ~ 省略 ~ root@3352505cddfe:/# docker run -it --privileged jpetazzo/dind:latest Unable to find image 'jpetazzo/dind:latest' locally ~ 省略 ~ root@5ec98d5d8b58:/# exit root@3352505cddfe:/# exit root@a227639b9373:/# exit orih@macbook.local:~/$
  19. D-in-D で注意したいこと docker rm しても /var/lib/docker にデータが 残るため、ディスク使用量が増え続ける → chadoe/docker-cleanup-volumes

    とか使う https://github.com/chadoe/docker-cleanup-volumes
  20. - tehranian/dind-jenkins-slave (GitHub) https://github.com/tehranian/dind-jenkins-slave 参考: D-in-D for Jenkins docker コマンドが実行可能な

    Dockerized Jenkins スレーブを サクッと動かせるみたいです
  21. - toricls/dind-gitlab-ci (GitHub) https://github.com/toricls/dind-gitlab-ci 参考: D-in-D for GitLab CI GitLab

    CI で簡単に Docker in Docker を 実現できます
  22. Thank you :)