Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Yasuhiro HARA ♥ / toricls

Slide 3

Slide 3 text

LT の内容 Docker + CI

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

たくさんのリポジトリ と たくさんの依存関係

Slide 8

Slide 8 text

Docker が解決してくれるかも

Slide 9

Slide 9 text

master slave ruby 2.0 slave ruby 2.1

Slide 10

Slide 10 text

- 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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

やれます

Slide 16

Slide 16 text

- 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 いろいろ工夫されてるので 見てみると面白いかも

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

D-in-D を試してみた [email protected]:~/$ 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 [email protected]:~/$

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

Thank you :)