Docker-in-Docker ã¯ãã³ã³ãããŒèªäœå
ã§å®è¡ãããã³ã³ãã㌠ã€ã¡ãŒãžãæ§ç¯ããä»®æ³åããã Docker ããŒã¢ã³ç°å¢ã§ãã Docker-in-Docker ãäœæããäž»ãªç®çã¯ãDocker èªäœã®éçºãæ¯æŽããããšã§ããã å€ãã®äººã Jenkins CI ãå®è¡ããããã«ããã䜿çšããŠããŸãã ããã¯æåã¯æ£åžžãªããšã®ããã«èŠããŸããããã®åŸåé¡ãçºçããŸãããã®åé¡ã¯ãJenkins CI ã³ã³ãããŒã« Docker ãã€ã³ã¹ããŒã«ããããšã§åé¿ã§ããŸãã ãã®èšäºã§ã¯ããããè¡ãæ¹æ³ã«ã€ããŠèª¬æããŸãã 詳现ãªãã§æçµçãªè§£æ±ºçã«èå³ãããå Žåã¯ãèšäºã®æåŸã®ã»ã¯ã·ã§ã³ãåé¡ã®è§£æ±ºãã ããèªãã§ãã ããã
ããã«ãŒã€ã³ããã«ãŒ: ãè¯ãã§ãã
XNUMX 幎以äžåãç§ã¯ Docker ãå°å
¥ããŸãã
- ãããã³ã°ããã¯ã
- 建ãŠã;
- å®è¡äžã® Docker ããŒã¢ã³ãåæ¢ããŸãã
- æ°ãã Docker ããŒã¢ã³ãèµ·åããŸãã
- ãã¹ã
- ãµã€ã¯ã«ãç¹°ãè¿ããŸãã
çŸããåçŸå¯èœãªã¢ã»ã³ã㪠(ã€ãŸããã³ã³ãããŒå ) ãäœæãããå Žåã¯ãããã«è€éã«ãªããŸãã
- ãããã³ã°ããã¯ã
- Docker ã®åäœããŒãžã§ã³ãå®è¡ãããŠããããšã確èªããŠãã ããã
- å€ã Docker ã䜿çšããŠæ°ãã Docker ãæ§ç¯ããŸãã
- Docker ããŒã¢ã³ãåæ¢ããŸãã
- æ°ãã Docker ããŒã¢ã³ãéå§ããŸãã
- ãã¹ã;
- æ°ãã Docker ããŒã¢ã³ãåæ¢ããŸãã
- ç¹°ãè¿ãã
Docker-in-Docker ã®åºçŸã«ãããããã»ã¹ã¯ããã·ã³ãã«ã«ãªããŸããã
- ãããã³ã°ããã¯ã
- çµã¿ç«ãŠãšæã¡äžãã XNUMX ã€ã®æ®µéã§è¡ããŸãã
- ãµã€ã¯ã«ãç¹°ãè¿ããŸãã
ãã£ã¡ã®æ¹ããã£ãšè¯ããªãã§ããïŒ
Docker-in-Docker: ãæªãã
ããããäžè¬ã«ä¿¡ããããŠããããšã«åããŠãDocker-in-Docker 㯠100% ã¹ã¿ãŒããããŒããŠãã³ãŒã³ã§ã¯ãããŸããã ç§ãèšãããã®ã¯ãéçºè ãèªèããå¿ èŠãããåé¡ãããã€ããããšããããšã§ãã
ãã®ãã¡ã® XNUMX ã€ã¯ãAppArmor ã SELinux ãªã©ã® LSM (Linux ã»ãã¥ãªã㣠ã¢ãžã¥ãŒã«) ã«é¢ãããã®ã§ããã³ã³ããã®å®è¡æã«ããå éš Dockerãããå€éš Dockerããšç«¶åãŸãã¯æ··ä¹±ãããã»ãã¥ãªã㣠ãããã¡ã€ã«ãé©çšããããšããå¯èœæ§ããããŸãã ããã¯ã-privileged ãã©ã°ã®å ã®å®è£ ãããŒãžããããšãããšãã«è§£æ±ºããã®ãæãé£ããåé¡ã§ãã ç§ã®å€æŽã¯æ©èœããç§ã® Debian ãã·ã³ãš Ubuntu ãã¹ã VM ã§ã¯ãã¹ãŠã®ãã¹ããæåããŸããããMichael Crosby ã®ãã·ã³ (ç§ã®èšæ¶ã§ã¯ã圌㯠Fedora ã䜿çšããŠããŸãã) ã§ã¯ã¯ã©ãã·ã¥ããŠçããŠããŸããŸãã åé¡ã®æ£ç¢ºãªåå ã¯æãåºããŸããããMike ã SELINUX=enforce ã䜿çšããè³¢ã人 (ç§ã¯ AppArmor ã䜿çšããŸãã) ã§ãããç§ã®å€æŽã SELinux ãããã¡ã€ã«ãèæ ®ããŠããªãã£ãããšãåå ãããããŸããã
ããã«ãŒã»ã€ã³ã»ããã«ãŒ: ãæªã
4 çªç®ã®åé¡ã¯ãDocker ã¹ãã¬ãŒãž ãã©ã€ããŒã«é¢ãããã®ã§ãã Docker-in-Docker ãå®è¡ãããšãå€éš Docker ã¯éåžžã®ãã¡ã€ã« ã·ã¹ãã (EXTXNUMXãBTRFSããã®ä»ã®ãã¡ã€ã« ã·ã¹ãã ) äžã§å®è¡ãããå éš Docker ã¯ã³ã㌠ãªã³ ã©ã€ã ã·ã¹ãã (AUFSãBTRFSãããã€ã¹ ããããŒ) äžã§å®è¡ãããŸãããªã©)ãå€éš Docker ã䜿çšããããã«æ§æãããŠããå 容ã«å¿ããŠç°ãªããŸã)ã ããã«ãããæ©èœããªãçµã¿åãããå€æ°äœæãããŸãã ããšãã°ãAUFS ã®äžã§ AUFS ãå®è¡ããããšã¯ã§ããŸããã
BTRFS ã®äžã§ BTRFS ãå®è¡ãããšãæåã¯æ©èœããã¯ãã§ããããã¹ãããããµãããªã¥ãŒã ãååšãããšã芪ãµãããªã¥ãŒã ã®åé€ã«å€±æããŸãã Device Mapper ã¢ãžã¥ãŒã«ã«ã¯åå空éããªããããè€æ°ã® Docker ã€ã³ã¹ã¿ã³ã¹ãåããã·ã³äžã§å®è¡ãããŠããå Žåããã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ãçžäºã«ãããã³ã³ã³ãã ããã¯ã¢ãã ããã€ã¹äžã®ã€ã¡ãŒãžãåç § (ããã³åœ±é¿) ããããšãã§ããŸãã ããã¯æªãã§ãã
ãããã®åé¡ã®å€ãã解決ããããã®åé¿çããããŸãã ããšãã°ãå éš Docker 㧠AUFS ã䜿çšãããå Žåã¯ã/var/lib/docker ãã©ã«ããŒãããªã¥ãŒã ã«å€ããã ãã§åé¡ãããŸããã Docker ã¯ãè€æ°ã® Docker åŒã³åºããåããã·ã³äžã§å®è¡ãããŠããå Žåã«ãããããäºãã«ã¹ãããããªããããããã€ã¹ ããããŒã®ã¿ãŒã²ããåã«ããã€ãã®ããŒã¹åå空éãè¿œå ããŸããã
ãã ãããããã®ããšããåããããã«ããã®ãããªã»ããã¢ããã¯ãŸã£ããç°¡åã§ã¯ãããŸããã
Docker-in-Docker: ç¶æ³ã¯ããã«æªåããŸã
ãã«ããã£ãã·ã¥ã«ã€ããŠã¯ã©ãã§ãã? ãããéåžžã«é£ããå ŽåããããŸãã ãDocker-in-Docker ãå®è¡ããŠããå Žåããã¹ãŠãå éš Docker ã«æ»ã代ããã«ããã¹ãäžã§ãã¹ããããŠããã€ã¡ãŒãžã䜿çšããã«ã¯ã©ãããã°ããã§ãã?ããšãã質åãããŸãã
é²åçãªäººã ã®äžã«ã¯ã/var/lib/docker ããã¹ããã Docker-in-Docker ã³ã³ãããŒã«ãã€ã³ãããããšãã人ãããŸãã å Žåã«ãã£ãŠã¯ã/var/lib/docker ãè€æ°ã®ã³ã³ãããŒãšå ±æããŸãã
ããŒã¿ãç Žæãããã§ãã? ãªããªããããã¯ãŸãã«ããŒã¿ã«ãã¡ãŒãžãäžãããã®ã ããã§ãã
Docker ããŒã¢ã³ã¯æããã« /var/lib/docker ã«æä»çã«ã¢ã¯ã»ã¹ã§ããããã«èšèšãããŠããŸãã ãã®ãã©ã«ããŒå ã«ãã Docker ãã¡ã€ã«ã«ã¯ãä»ã«äœãã觊ããããçªãåºããããçªãåºããããããŠã¯ãªããŸããã
ãªããããªãã®ã§ãããã? ããã¯ãdotCloud ã®éçºäžã«åŠãã æãé£ããæèšã® XNUMX ã€ã§ããããã§ãã dotCloud ã³ã³ãã ãšã³ãžã³ã¯ãè€æ°ã®ããã»ã¹ã /var/lib/dotcloud ã«åæã«ã¢ã¯ã»ã¹ããããšã§å®è¡ãããŸããã (ã€ã³ãã¬ãŒã¹ç·šéã§ã¯ãªã) ã¢ãããã¯ãªãã¡ã€ã«çœ®æãå§åããã¯ãå¿ é ããã¯ãã³ãŒãã«è¿œå ãããªã©ã®ç¡çŸãªããªãã¯ãSQLite ã BDB ãªã©ã®å®å šãªã·ã¹ãã ã䜿çšãããã®ä»ã®å®éšã¯ãåžžã«æ©èœãããšã¯éããŸããã§ããã æçµçã« Docker ãšãªãã³ã³ãã ãšã³ãžã³ãåèšèšããŠãããšããèšèšäžã®å€§ããªæ±ºå®äºé ã® XNUMX ã€ã¯ããã¹ãŠã®åæå®è¡æ§ã®ãã³ã»ã³ã¹ãæé€ããããã«ããã¹ãŠã®ã³ã³ããæäœã XNUMX ã€ã®ããŒã¢ã³ã«çµ±åããããšã§ããã
誀解ããªãã§ãã ãããè€æ°ã®ããã»ã¹ãšææ°ã®äžŠåå¶åŸ¡ã䜿çšããŠãåªãããä¿¡é Œæ§ãé«ããé«éãªãã®ãäœæããããšã¯å®å šã«å¯èœã§ãã ããããDocker ãå¯äžã®ãã¬ãŒã€ãŒãšããŠäœ¿çšããŠã³ãŒããäœæããã³ä¿å®ããæ¹ãã·ã³ãã«ã§ç°¡åã§ãããšç§ãã¡ã¯èããŠããŸãã
ããã¯ãè€æ°ã® Docker ã€ã³ã¹ã¿ã³ã¹é㧠/var/lib/docker ãã£ã¬ã¯ããªãå ±æãããšåé¡ãçºçããããšãæå³ããŸãã ãã¡ãããããã¯ç¹ã«ãã¹ãã®åæ段éã§ã¯æ©èœããŸãã ãèããŠãã ããããæ¯ãããç§ã¯ ubuntu ã Docker ãšããŠå®è¡ã§ããŸã!ã ããããXNUMX ã€ã®ç°ãªãã€ã³ã¹ã¿ã³ã¹ããåãç»åãååŸãããªã©ãããè€éãªããšãè©ŠããŠã¿ããšãäžçãçãäžããã®ãããããŸãã
ããã¯ãCI ã·ã¹ãã ããã«ããšãªãã«ããå®è¡ããå ŽåãDocker-in-Docker ã³ã³ãããåèµ·åãããã³ã«ããã®ãã£ãã·ã¥ã«æ žãæäžãããå±éºãããããšãæå³ããŸãã ããã¯ãŸã£ããã¯ãŒã«ã§ã¯ãããŸãã!
ãœãªã¥ãŒã·ã§ã³
äžæ©äžãã£ãŠã¿ãŸãããã æ¬åœã« Docker-in-Docker ãå¿ èŠã§ãã? ãããšããCI ã·ã¹ãã èªäœãã³ã³ãããŒå ã«ããéã« Docker ãå®è¡ããŠãCI ã·ã¹ãã ããã³ã³ãããŒãšã€ã¡ãŒãžãæ§ç¯ããŠå®è¡ã§ããããã«ãããã ãã§ãã?
ãã£ãšã»ãšãã©ã®äººã¯åŸè ã®ãªãã·ã§ã³ãæãã§ããã§ããããã€ãŸããJenkins ã®ãã㪠CI ã·ã¹ãã ã§ã³ã³ãããå®è¡ã§ããããã«ããããšããããšã§ãã ãããè¡ãæãç°¡åãªæ¹æ³ã¯ãåçŽã« Docker ãœã±ããã CI ã³ã³ãããŒã«æ¿å ¥ããããã -v ãã©ã°ã«é¢é£ä»ããããšã§ãã
ç°¡åã«èšããšãCI ã³ã³ãã㌠(Jenkins ãªã©) ãå®è¡ãããšãã«ãDocker-in-Docker ãšäžç·ã«äœãããããã³ã°ããã®ã§ã¯ãªãã次ã®è¡ã§éå§ããŸãã
docker run -v /var/run/docker.sock:/var/run/docker.sock ...
ãã®ã³ã³ãã㯠Docker ãœã±ããã«ã¢ã¯ã»ã¹ã§ããããã«ãªããã³ã³ãããå®è¡ã§ããããã«ãªããŸãã ãã ãããåãã³ã³ãããå®è¡ãã代ããã«ããå åŒãã³ã³ãããèµ·åããŸãã
å ¬åŒã® Docker ã€ã¡ãŒãž (Docker ãã€ããªãå«ã) ã䜿çšããŠãããè©ŠããŠãã ããã
docker run -v /var/run/docker.sock:/var/run/docker.sock
-ti docker
ãã㯠Docker-in-Docker ã®ããã«èŠããåäœããŸãããDocker-in-Docker ã§ã¯ãããŸããããã®ã³ã³ãããè¿œå ã®ã³ã³ãããäœæãããšãããããã¯ãããã¬ãã«ã® Docker ã«äœæãããŸãã ãã¹ãã«ããå¯äœçšã¯çºçãããã¢ã»ã³ã㪠ãã£ãã·ã¥ã¯è€æ°ã®åŒã³åºãéã§å ±æãããŸãã
泚: ãã®èšäºã®ä»¥åã®ããŒãžã§ã³ã§ã¯ãDocker ãã€ããªããã¹ãããã³ã³ãããŒã«ãªã³ã¯ããããšãæšå¥šãããŠããŸããã Docker ãšã³ãžã³ãéçã©ã€ãã©ãªãŸãã¯éçã©ã€ãã©ãªã«è¿ãã©ã€ãã©ãªãã«ããŒããªããªã£ããããããã¯ä¿¡é Œã§ããªããªããŸããã
ãããã£ãŠãJenkins CI ãã Docker ã䜿çšãããå Žåã¯ã2 ã€ã®ãªãã·ã§ã³ããããŸãã
åºæ¬çãªã€ã¡ãŒãž ããã±ãŒãž ã·ã¹ãã (ã€ãŸããã€ã¡ãŒãžã Debian ã«åºã¥ããŠããå Žåã¯ã.deb ããã±ãŒãžã䜿çšããŸã)ãDocker API ã䜿çšã㊠Docker CLI ãã€ã³ã¹ããŒã«ããŸãã
ããã€ãã®åºå ð
ãã€ãã宿æ³ããã ãããããšãããããŸãã ç§ãã¡ã®èšäºãæ°ã«å
¥ã£ãŠããŸãã? ãã£ãšèå³æ·±ãã³ã³ãã³ããèŠããã§ãã? 泚æããããå人ã«å§ãããããŠç§ãã¡ããµããŒãããŠãã ããã
ã¢ã ã¹ãã«ãã ã®ãšã¯ã€ãã¯ã¹ Tier IV ããŒã¿ã»ã³ã¿ãŒã§ã¯ Dell R730xd ã 2 åå®ã? ããã ã
åºæïŒ habr.com