Docker 1.7 ã§ã®å®éšçãªãããã¯ãŒãã³ã°ãã Docker 1.9 ã§ã®æåã®ãªãªãŒã¹ãŸã§ãã³ãã¥ããã£ããã®æè¿ã¯çŽ æŽããããã®ã§ããã ãŸã第äžã«ããã¹ãŠã®è°è«ãè©äŸ¡ãPRãããã³æåºãããåé¡ã«æè¬ããŸãã ãããã¯ãŒã¯æ©èœã¯ãªãªãŒã¹ããšã«é²åããŠãããããèšèšã®èåŸã«ããåºæ¬ååã説æããããã«æéããããããšèããŸããã
ãŠãŒã¶ãŒãã¡ãŒã¹ã
Dockerã®å²åŠã¯ãåªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãšã€ã³ãã©ã¹ãã©ã¯ãã£å šäœã§ã®ã·ãŒã ã¬ã¹ãªã¢ããªã±ãŒã·ã§ã³ç§»æ€æ§ãåããããŒã«ãæ§ç¯ããããšã§ãã æ°æ©èœã¯åžžã«ç¶ç¶çã«æŽç·Žãããå埩ããããããæçµè£œåã¯å¯èœãªéãæé«ã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããŸãã ãããã¯ãŒãã³ã°ã¯åãå²åŠã«åŸãããŠãŒã¶ãŒã«é©ããæœè±¡åãèŠã€ããããã«äœåºŠãç¹°ãè¿ããŸããã
ãããã¯ãŒã¯ã«é¢ããŠã¯ã次㮠2 çš®é¡ã®ãŠãŒã¶ãŒãããŸãã
- Dockerãã©ãããã©ãŒã äžã«åæ£ã¢ããªã±ãŒã·ã§ã³ã¹ã¿ãã¯ãäœæããŠãããã€ããã¢ããªã±ãŒã·ã§ã³éçºè
- ã€ã³ãã©ã¹ãã©ã¯ãã£ãæ§æããã³ç®¡çãããããã¯ãŒã¯ IT ããŒã
ç§ãã¡ã¯ããããã®çš®é¡ã®ãŠãŒã¶ãŒã«é©åãªçš®é¡ã®ããŒã«ãæäŸããŠãç®æšãç°¡åã«éæã§ããããã«ãã @arunguptaã @allingeek ã @Yoanis_Gilãªã©ã®Dockerã³ãã¥ããã£ã®çµéšã®äžéšã«ã€ããŠèªãããšãã§ããããã«ããããšèããŠããŸããã
Dockerã®äž»ãªçŠç¹ã¯ããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ããŒã ã§ããããšITéçšã§ããããšããŠãŒã¶ãŒã«ãããŸãã ããã¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãšã·ãŒã ã¬ã¹ãªã¢ããªã±ãŒã·ã§ã³ã®ç§»æ€æ§ãšããåãã¢ãŒããã¯ãã£ç®æšããµããŒããããšã³ã·ã¹ãã ããŒãããŒããµããŒãããããšãæå³ããŸãã ãã®ããšã念é ã«çœ®ããŠããã¹ãŠã®APIãšUIã¯ãšã³ããŠãŒã¶ãŒã«å ¬éããå¿ èŠãããããã以å€ã®ãã®ã¯ã³ã¢ããªã¥ãŒãæãªããšèããŠããŸãã DockerããµããŒããŸãã¯å«ãããšäž»åŒµãããšã³ã·ã¹ãã å ã®äººã¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãšç§»æ€æ§ã®ç¶æãé å®ããå¿ èŠããããŸãã
ãŠãŒã¶ãŒ: ã¢ããªã±ãŒã·ã§ã³éçºè
ã¢ããªã±ãŒã·ã§ã³éçºè ã¯ãã¢ããªã±ãŒã·ã§ã³ãçžäºã«éä¿¡ããããšãæãã§ããŸãããã»ãšãã©ã®éçºè ã¯ããããã©ã®ããã«æ£ç¢ºã«éæããããã®è©³çްãçè§£ããããé¢äžãããããããšãæãã§ããŸããã å®éã圌ãã¯ã¢ããªã±ãŒã·ã§ã³ããã€ã³ããããŠããIPã¢ãã¬ã¹ãç¥ããããããŸããã ã¢ããªã±ãŒã·ã§ã³éçºè ã®é¢å¿äºã¯ãéåžžãã¢ããªã±ãŒã·ã§ã³ããã€ã³ããããŠããã¬ã€ã€ãŒ 4 ãµãŒãã¹å±€ã§çµãããŸãã
Docker ãããã¯ãŒã¯èšèšã®åºæ¬ååã® 1 ã€ã¯ãã¢ããªã±ãŒã·ã§ã³éçºè ããããã¯ãŒã¯é 管ã®è©³çŽ°ãæ°ã«ããå¿ èŠããªãããã«ããããšã§ãã ç§ãã¡ã¯ããããã¯ãŒã¯æ¥ç¶ãšãµãŒãã¹æ€åºãã©ã®ããã«å®çŸãããããšããæ²æšãªè©³çްãåçŽãªAPIãšUIã®èåŸã«é ãããšã§ãã¢ããªã±ãŒã·ã§ã³éçºè ã忣ã¢ããªã±ãŒã·ã§ã³ã¹ã¿ãã¯ãããèªç±ã«éçºã§ããããã«ãããšèããŠããŸãã ã¢ããªã±ãŒã·ã§ã³éçºè ãã¢ããªã·ã㯠ã¢ããªã±ãŒã·ã§ã³ãäžé£ã®ãã€ã¯ããµãŒãã¹ã«å€æããããšã劚ããæ¥ç¶/æ€åºå¯èœæ§ã®é çã®çš®ãšç§»æ€æ§ã®æžå¿µãæé€ããå¿ èŠããããŸãã éçºè ã¯ãããã€ãã®ç°¡å㪠"ãããã¯ãŒã¯äœæ" ã³ãã³ããš "ãããã¯ãŒã¯æ¥ç¶" ã³ãã³ãã䜿çšããŠããã€ã¯ããµãŒãã¹ã 1 ã€ã®åæ£ã¢ããªã±ãŒã·ã§ã³ã«ãã€ã³ãã§ããããã«ããããšèããŠããŸãã
ãã 1 ã€ã®æéãšãªãååã¯ãDocker ã³ã³ãããŒã®ç§»æ€æ§ãšã¯ã¹ããªãšã³ã¹ããããã¯ãŒã¯ã«æ¡åŒµããããšã§ãã ã€ã¡ãŒãžã䜿çšããŠäœæããã Docker ã³ã³ãããŒã¯ãåãã€ã¡ãŒãžã䜿çšãããŠããéããå®è¡å Žæã«é¢ä¿ãªãåãããã«åäœããŸãã åæ§ã«ãã¢ããªã±ãŒã·ã§ã³éçºè ãã¢ããªã±ãŒã·ã§ã³ã¹ã¿ãã¯ãäžé£ã®åæ£ã¢ããªã±ãŒã·ã§ã³ãšããŠå®çŸ©ããå Žåãå®è¡ãããã€ã³ãã©ã¹ãã©ã¯ãã£ã«é¢ä¿ãªããåãããã«æ©èœããå¿ èŠããããŸãã ããã¯ãã¢ããªã±ãŒã·ã§ã³éçºè ã«å ¬éããæœè±¡åãããã«éèŠãªããšã«ãã¢ããªã±ãŒã·ã§ã³éçºè ã«å ¬éããªãæœè±¡åã«å€§ããäŸåããŸãã
ãã®ããã«ããŠãDockerã®ããããã¯ãŒã¯ãæœè±¡å(CNM)ãçãŸããŸããã ããã¯ãã¢ããªã±ãŒã·ã§ã³éçºè ãã¢ããªã±ãŒã·ã§ã³ ãµãŒãã¹ã®æ¥ç¶æ§ãšæ€åºå¯èœæ§ã®ããŒãºã«ã€ããŠèããæšè«ããããã®é©åãªãªãã¡ã¬ã³ã¹ãæäŸãããããæ£ç¢ºã«å®çŸããæ¹æ³ã®ãã¹ãŠã®è€éãã«æ°ãåãããããšã¯ãããŸããã ããæå³ã§ã¯ã"ãããã¯ãŒã¯" æœè±¡åã¯ããŠãŒã¶ãŒãããããžãç©ççã«æ§ç¯ãã "æ¹æ³" ãæç€ºããã®ã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³ãå¿ èŠãšãã "ã©ã®ãããª" çš®é¡ã®ããããžãäŒããããšãã§ããããã宣èšåã§ãã

ãŠãŒã¶ãŒ: ãããã¯ãŒã¯ IT
ã¢ããªã±ãŒã·ã§ã³éçºè ã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ã®è©³çްããè§£æŸãããããŒã¿ãã«ãªã¢ããªã±ãŒã·ã§ã³å±éãšã¯ã¹ããªãšã³ã¹ãæãã§ããŸããããããã¯ãŒã¯ IT ããŒã ã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ã«å±éããããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ãã¹ã ãŒãºã«å®è¡ãããã¢ããªã±ãŒã·ã§ã³ã® SLA ãšããžãã¹ ã«ãŒã«ã«æºæ ããŠããããšã確èªããããšèããŠããŸãã ããã¯ãã¢ããªã±ãŒã·ã§ã³ã®æ©èœãšæå³ãæãªãããšãªãããããã¯ãŒã¯æ§æããããã€ããŒã倿Žã§ããããšãæå³ããŸãã ã¢ãžã£ã€ã«ãšã¯ãéçºè ã«ãšã£ãŠã¯ã¹ããŒããæå³ãããããã¯ãŒã¯ITã«ãšã£ãŠã¯ç°ãªãçš®é¡ã®ã¹ããŒããæå³ããå€åããããŒãºã«è¿ éã«å¯Ÿå¿ããä»ã®äœããå£ãããšãªã調æŽãè¡ãããšãã§ããŸãã
æ¹çšåŒã®ãæ¹æ³ãã®éšåã¯ãããã©ã€ããŒãã®æœè±¡åã«ãã£ãŠå®çŸãããŸãã æœè±¡ãããã¯ãŒã¯ ããããžã®å®çŸ©ãäžããããå Žåããã®ããããžãå ·äœçã«ã©ã®ããã«å®çŸãããã¯ã䜿çšããããã©ã€ããŒã«ãã£ãŠç°ãªããŸãã ãã¹ãŠã®ãã©ã€ããŒãç°¡åã«æºæ ã§ãã Docker Networking ãã©ã°ã€ã³ API ãå®çŸ©ããããšã§ããããã©ã€ããŒãå¥ã®ãã©ã€ããŒã«çœ®ãæããããšã§ããŸã£ããåãã¢ããªã±ãŒã·ã§ã³é§ååãããã¯ãŒã¯ ããããžãä»»æã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã«ç°¡åã«ãããã€ã§ããŸãã
ãã©ã°ã€ã³ API ã¯ã次ã®å Žåã«ãã©ã€ããŒã«ããã¯ãæäŸããŸãã
- ãããã¯ãŒã¯ãäœæãããŸã
- ã³ã³ãããŒããããã¯ãŒã¯ã«æ¥ç¶ãããŠãã
- ã³ã³ããã«ã¯IPã¢ãã¬ã¹ãå¿ èŠã§ã
ãããã¯ãã¢ããªã±ãŒã·ã§ã³ ãããã¯ãŒã¯ ããããžã®ãããã¯ãŒã¯æ¥ç¶ãå®çŸããããã«æãéèŠãªããã¯ã§ãã Docker ã¯ã䜿çšãããã©ã€ããŒã«é¢ä¿ãªããã¢ããªã±ãŒã·ã§ã³ã«åããããã¯ãŒã¯æ¥ç¶ä¿èšŒãæäŸããŸãã åæã«ããããã¯ãŒã¯ITããŒã ã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£å ã®ã¢ããªã±ãŒã·ã§ã³ããããžã容æã«ããä»»æã®ãã©ã€ããèªç±ã«éžæã§ããŸãã
ããã©ã°ã€ã³ããšåŒã°ããç¹å¥ãªçš®é¡ã®ãã©ã€ããŒãããã€ããããŸãã ãã¹ãŠã®ãã©ã°ã€ã³ã¯ãã©ã€ããŒã§ãã ãã ãããã©ã°ã€ã³ã¯Dockerãšã³ãžã³ãã€ããªã«ã¯çµã¿èŸŒãŸããŠããŸããã ãããã¯ç¬ç«ããå€éšããã°ã©ã ã§ãã(ã»ãšãã©ã®å ŽåãããèªäœãDockerã³ã³ããã§ã)ãçµã¿èŸŒã¿ãã©ã€ããŒãšåããã©ã€ããŒAPIã䜿çšããŸãã ãããã£ãŠãæ¬è³ªçã«ã¯ãçµã¿èŸŒã¿ãã©ã€ããŒãå€éšãã©ã°ã€ã³ã«äº€æããŠãä»»æã®ãããã¯ãŒã¯ããããžãå®çŸã§ããŸãã ããã¯ããããããªãŒã¯å«ãŸããŠããã亀æå¯èœããšããDockerã®å²åŠãåæ ããŠããŸãã ãã©ã°ã€ã³ã¯ããããã¯ãŒã¯ITã®ç§»æ€æ§ãšéžæããµããŒãããäžã§éèŠã§ãã
Dockerãããã¯ãŒãã³ã°ã®åŒ·åã«ã€ããŠæåã«èãå§ãããšãããã©ã°ã€ã³ã¯ç¬¬äžçŽã®åžæ°ã§ããã¹ãã§ããããšã¯æããã§ããã ã©ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã§ããã¢ããªã±ãŒã·ã§ã³ã®æ¥ç¶æ§ãšæ€åºå¯èœæ§ã®ããŒãºã¯å¹ åºã倿§ã§ãã ãã¹ãŠã®ãŠãŒã¶ãŒãšã¢ããªã±ãŒã·ã§ã³ãæºè¶³ããããã®åé¡ã«å¯Ÿããåäžã®è§£æ±ºçã¯ãããŸããã ãããã£ãŠããã©ã°ã€ã³ã¯æåããDockerãããã¯ãŒãã³ã°èšèšã®éèŠãªéšåã§ããã æ°ããDockerãããã¯ãŒãã³ã°ã®æåã®ããŒãžã§ã³ããªãªãŒã¹ãããšãã«ããããããªãŒã亀æãããæ©èœããŠãŒã¶ãŒãå©çšã§ãããšå€æããŸããã çµå±ãããã¯ãŸãã«ç§ãã¡ãDocker 1.9ã§Dockerãããã¯ãŒãã³ã°ããªãªãŒã¹ããæ¹æ³ã§ãã
ãã©ã°ã€ã³ API ã®èšèš
ã¢ããªã±ãŒã·ã§ã³ãããã¯ãŒã¯ããããžãšãããã¯ãŒã¯ã®æœè±¡åã¯ã¢ããªã±ãŒã·ã§ã³éçºè ã«éç¹ã眮ããŠããŸããããã©ã€ããŒ/ãã©ã°ã€ã³ã®æ§æã¯IT管çè ã«éç¹ã眮ããŠããŸãã ãããã¯ãŒã¯ITã¯ãã¢ããªã±ãŒã·ã§ã³ãå°å ¥ããã€ã³ãã©ã¹ãã©ã¯ãã£ãšé¢é£ãããµãŒãã¹ã»ã¬ãã«ã«éç¹ã眮ããŠããŸãã ãã ããã¢ããªã±ãŒã·ã§ã³ã®ãããã¯ãŒã¯æ¥ç¶ã®æå³ãæºããããšãã§ããããšã確èªããå¿ èŠããããŸãã
圌ãã¯æ¬¡ã®ããšã確å®ã«ããããšèããŠããŸãã
- ãããã¯ãŒã¯ ãã¹ãçµã¿èŸŒãããã®é©åãªãœãªã¥ãŒã·ã§ã³ã䜿çšãããŸã
- ãããã¯ãŒã¯ ãªãœãŒã¹ã管çããããã®é©åãªãœãªã¥ãŒã·ã§ã³ã䜿çšãããŠãã
- ã¢ããªã±ãŒã·ã§ã³ã»ãµãŒãã¹ãæ€åºããããã®é©åãªãœãªã¥ãŒã·ã§ã³ã䜿çšãããŠãã
- 圌ãã¯äžèšã®ãã¹ãŠã«ã€ããŠå¥ã ã®ç¬ç«ããéžæãããããšãã§ããŸã
ãããã¯ãŒã¯æ§æã®ããŸããŸãªèŠçŽ ã«å¯ŸããŠããŸããŸãªãœãªã¥ãŒã·ã§ã³ãéžæãããããã¯ãŒã¯ITã«æè»æ§ãæäŸããããšã§ãæé«ã®éçšãšã¯ã¹ããªãšã³ã¹ãåŸãããŸãã
1 ã€ã®å æ¬çãªãã©ã°ã€ã³ API/æ¡åŒµãã€ã³ããæäŸãã代ããã«ããã©ã°ã€ã³ API ãè«çæ§æã°ã«ãŒãã«å¯Ÿå¿ããåå¥ã®æ¡åŒµãã€ã³ãã«åå²ããŸããã
- ãããã¯ãŒã¯ ãã©ã€ããŒæ¡åŒµãã€ã³ã ã¯ããããã¯ãŒã¯æ¥ç¶ãæ§æããŠå®çŸããããã«å¿ èŠãª API ãæäŸããŸã
- IP ã¢ãã¬ã¹ç¯å²ãæ§æãæ€åºãããã³ç®¡çããããã® IPAM æ¡åŒµãã€ã³ã
ãã®ãã¶ã€ã³ã¯ãæ§æå¯èœæ§ãä¿é²ããããã«æ©èœããšã«1ã€ã®ãã€ã³ã¿ãŒãã§ã€ã¹ããå®çŸ©ããããšãæå±ããgolangã€ã³ã¿ãŒãã§ã€ã¹å²åŠããã€ã³ã¹ãã¬ãŒã·ã§ã³ãåŸãŠããŸãã ããã¯ããããã¯ãŒã¯ITãããŸããŸãªããŒãºã«åãããŠããŸããŸãªãœãªã¥ãŒã·ã§ã³ãæ§æããããã®åŒ·åãªæ©èœã§ãã
ãã©ã°ã€ã³APIèšèšã®å¥ã®åŽé¢ã¯ãã³ã³ãããç°ãªããã©ã°ã€ã³ã«ãã£ãŠãµããŒããããè€æ°ã®ãããã¯ãŒã¯ã«åå ãããšãã«çºçããå¯èœæ§ã®ããç«¶åã解決ããããã«ãDocker NetworkingããããŒã«ãŒã§ããç¶ããããã«ããããšã§ãã ããšãã°ã2 ã€ã®ç°ãªããã©ã€ããŒããåãã«ãŒã ãã¬ãã£ãã¯ã¹ã§ãã¯ã¹ã ããã IP ãç°ãªãéçã«ãŒãã plumb ããå ŽåããããŸãã ãããçºçããå Žåããããã®ãã©ã€ããŒããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãç ç²ã«ããããšãªãã誰ã®ã«ãŒããåã€ããåå¥ã«éžæããããšã¯ã§ããŸããã ãããã£ãŠããã©ã°ã€ã³APIã®äžéšãšããŠãç¹å®ã®ãã©ã€ããŒããããã®ç«¶åãåç¬ã§è§£æ±ºããæ¹æ³ããªããããlibnetworkã¯ã³ã³ããã®ãããã¯ãŒã¯åå空éãžã®ãã©ã€ããŒã®ã¢ã¯ã»ã¹ãæäŸããŸããã ããã¯ãçµã¿èŸŒã¿ã®ãã©ã€ããŒãšãã©ã°ã€ã³ã«åœãŠã¯ãŸããŸãã CNIã®ãããªä»ã®ãã©ã°ã€ã³ãã¬ãŒã ã¯ãŒã¯ã¯ããã®ãã©ã€ããžã®åå空éã¢ã¯ã»ã¹ãæäŸãããããã³ã³ããåå空éå ã§äºãã«èžã¿ã€ãããããã®ãã©ã€ãã«å¯ŸåŠããå¿ èŠãããå ŽåããããŸãã ãããèµ·ãããšããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãšç§»æ€æ§ãäœäžããŸãã
ãã®ãã©ã°ã€ã³èšèšã®ãã1ã€ã®çç±ã¯ãããŸããŸãªã¬ã€ã€ãŒ(IPã¢ãã¬ã¹ç®¡çããµãŒãã¹æ€åºãè² è·åæ£ãªã©)ã§ãã现ãããããã¯ãŒã¯ãã©ã°å¯èœæ§ãæäŸãããŠãŒã¶ãŒãå æ¬çã§æèŠã®ãããããã¯ãŒã¯ãã©ã°ã€ã³ã«äŸåããã®ã§ã¯ãªããæ©èœãæºããããã«æé©ãªãã©ã€ããŒãéžæã§ããããã«ããããšã§ãã ããšãã°ããããã¯ãŒã¯äºæ¥è ãç¹å®ã® IPAM ãœãªã¥ãŒã·ã§ã³ ( Infoblox ãªã©) ãå¥ã®ãããã¯ãŒã¯ ãã©ã°ã€ã³ (ã·ã¹ã³ã® contiv ãªã©) ãšçµã¿åãããŠäœ¿çšããã·ããªãªãªã©ã§ãã libnetwork ⢠ã¯ã³ã³ããã®ãããã¯ãŒã¯åå空éã管çãããããå¿ èŠãªDocker UXãå®è£ ããç°ãªããã©ã°ã€ã³ã®ãã®ãããªçµã¿åãããä¿èšŒã§ããŸãããããã£ãŠããããã¯ãŒã¯èšèšãå¶åŸ¡ããããã«å¿ èŠãªä¿èšŒããããã¯ãŒã¯ãªãã¬ãŒã¿ãŒã«æäŸããŸãã
ããã«ãŒ API ãšãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³
Docker ãããã¯ãŒã¯ã§ã¯ã2 人ã®ç°ãªããŠãŒã¶ãŒã®æžå¿µäºé ãåé¢ã§ãããããDocker UI ã§ 2 ã€ã®ç°ãªãã³ãã³ããèšèšããã®ã¯èªç¶ãªããšã§ããã UI ãš API ã¯ããããã¯ãŒã¯ IT ãã¢ããªã±ãŒã·ã§ã³éçºè ãšã®èª¿æŽãã§ããã ãå°ãªãããŠã€ã³ãã©ã¹ãã©ã¯ãã£ãæ§æã§ããããã«èšèšãããŠããŸãã ããã«ãããã¢ããªã±ãŒã·ã§ã³éçºè ãšãããã¯ãŒã¯ITããŒã éã®ããã¯ã¹ãããã¯ãŒã¯ãããŒãåé¿ã§ããŸãã
ããšãã°ãã¢ããªã±ãŒã·ã§ã³éçºè ããããã¯ãŒã¯ IT ã«ç¹å®ã®ååã®ãããã¯ãŒã¯ãäœæããããã«èŠæ±ããå Žåããããã¯ãŒã¯ IT ã¯ç¬ç«ããŠãç¹å®ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã«é©ããæ§æãªãã·ã§ã³ãé©çšããŠãããã¯ãŒã¯ã®äœæãéå§ã§ããŸãã åæã«ãã¢ããªã±ãŒã·ã§ã³éçºè ã¯ãåç §ãããååãæã€ãããã¯ãŒã¯ããã¢ããªã±ãŒã·ã§ã³ã«å¿ èŠãªãããã¯ãŒã¯ ããããžãå®çŸããããã«å©çšã§ããããšãåæãšããŠãã¢ããªã±ãŒã·ã§ã³ã®äœæã«åãçµãããšãã§ããŸãã
ããã念é ã«çœ®ããŠãUIãšAPIã®ãã©ã³ãã¯ããããæ¬¡ã®ããã«ãªããŸãã
- ãããã¯ãŒã¯ IT ã¯ããããã¯ãŒã¯ã«äœ¿çšãããããã¯ãŒã¯ ãã©ã€ããŒãš IPAM ãã©ã€ããŒã®çµã¿åãããäœæã管çããæ£ç¢ºã«å¶åŸ¡ã§ããŸãã ãŸãããµãããããã²ãŒããŠã§ã€ãIPç¯å²ãªã©ã®ããŸããŸãªãããã¯ãŒã¯åºæã®æ§æãæå®ãããããã©ã€ããŒåºæã®æ§æãããå Žåã¯ãããæž¡ãããšãã§ããŸãã
- æ§æã¯ãäœæããããããã¯ãŒã¯ã«ä»»æã®ã³ã³ãããæ¥ç¶ããããšã§ãã ããã¯ãäž»ã«æ¥ç¶æ§ãšçºèŠå¯èœæ§ã®1ã€ã§ãããããã¢ããªã±ãŒã·ã§ã³éçºè ã«çŠç¹ãåœãŠãŠããŸãã
ã¢ããªã±ãŒã·ã§ã³éçºè ãã¢ããªã±ãŒã·ã§ã³ãæ§æããäžè¬çãªæ¹æ³ã¯ãã¢ããªã±ãŒã·ã§ã³ã®äžéšã§ãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ãµãŒãã¹ãšããããã¯ãŒã¯ITã«ãã£ãŠäºåã«ããããžã§ãã³ã°ãããå¯èœæ§ã®ãããããã¯ãŒã¯ãåç §ããã¢ããªã±ãŒã·ã§ã³å®çŸ©ããããžã§çžäºã«æ¥ç¶ããæ¹æ³ãæå®ã§ãããDocker Composeããã¡ã€ã«ã䜿çšããããšã§ãã
å®éãéçºè ã¯ãã¢ããªã±ãŒã·ã§ã³ããããžãæ¬è³ªçã«å®çŸ©ããDocker Composeãã¡ã€ã«ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŸãã ãŸã£ããåãäœæãã¡ã€ã«ã䜿çšããŠä»»æã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã«ã¢ããªã±ãŒã·ã§ã³ããããã€ã§ããããã«ãªãããããã¯ãŒã¯ IT ããŒã ã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ã®èŠä»¶ã«åºã¥ããŠãããã¯ãŒã¯ (äœæãã¡ã€ã«ã§åç §ããã) ãäºåã«ããããžã§ãã³ã°ã§ããŸãã ãã®éèŠãªåŽé¢ã¯ãã¢ããªã±ãŒã·ã§ã³éçºè ãå¥ã®ç°å¢ã«ãããã€ããããã³ã«Composeãã¡ã€ã«ãå蚪ããå¿ èŠããªãããšã§ãã
ãã®æžå¿µã®åé¢ã«ãããéçºè ãšãããã¯ãŒã¯ITããå¿ èŠã«å¿ããŠç°ãªããã©ã°ã€ã³ã䜿çšããŠããããã¯ãŒã¯ã®ããããžã§ãã³ã°ãšã¢ããªã±ãŒã·ã§ã³ã®å±éã«ãããŠç¬ç«ããŠäœæ¥ã§ããã¯ãŒã¯ãããŒãå¯èœã«ãªããŸãã
äŸãšããŠã次㮠Compose v2 ã¢ããªã±ãŒã·ã§ã³ãèããŠã¿ãŸãããã
$ cat docker-compose.yml
ããŒãžã§ã³: "2"
ãµãŒãã¹ïŒ
æç¥šã¢ããª:
ç»å:ããã«ãŒ/äŸ-æç¥š-ã¢ããª-æç¥š-ã¢ããª
ããŒãïŒ
- "80"
ãããã¯ãŒã¯ïŒ
- æç¥šããã
çµæã¢ããª:
ç»å:ããã«ãŒ/äŸ-æç¥š-ã¢ããª-çµæ-ã¢ããª
ããŒãïŒ
- "80"
ãããã¯ãŒã¯ïŒ
- æç¥šããã
å€åŽè
ïŒ
ç»å:ããã«ãŒ/äŸ-æç¥š-ã¢ããª-ã¯ãŒã«ãŒ
ãããã¯ãŒã¯ïŒ
- æç¥šããã
ã¬ãã£ã¹:
ç»å:ã¬ãã£ã¹
ãããã¯ãŒã¯ïŒ
- æç¥šããã
.dbïŒ
ç»å:æçš¿:9.4
ããªã¥ãŒã ïŒ
- "db-data:/var/lib/postgresql/data"
ãããã¯ãŒã¯ïŒ
- æç¥šããã
ããªã¥ãŒã ïŒ
ããŒã¿ããŒã¹ããŒã¿:
ãããã¯ãŒã¯ïŒ
æç¥šããã:
æ¢å®ã§ã¯ãcompose v2 ã¯æ¢å®ã®ãã©ã€ããŒã䜿çšããŠããã®ã¢ããªã±ãŒã·ã§ã³ã® Docker ãããã¯ãŒã¯ãäœæããŸãã docker-engine ã«å¯ŸããŠå®è¡ããå Žåãæ¢å®ã®ãã©ã€ããŒã¯ããªããž ãã©ã€ããŒã§ãã ãããã£ãŠãã¢ããªã±ãŒã·ã§ã³ãèµ·åãããšããããã¯ãŒã¯ããããã©ã«ããã©ã€ããŒãã䜿çšããŠäœæãããŠããããšãããããŸãã
$ docker-compose up -d
ããã©ã«ããã©ã€ãã§ãããã¯ãŒã¯ãvoteapp_votenetããäœæãã
ããŒã¿ããŒã¹ã®éå§
ã¬ãã£ã¹ã®éå§
voteapp_worker_1ã®éå§
voteapp_voting-app_1ã®éå§
voteapp_result-app_1ã®éå§
ã¢ããªã±ãŒã·ã§ã³ã¯åäžã®ãã¹ãã§åé¡ãªãåäœããã¢ããªã±ãŒã·ã§ã³éçºè ã¯ãããã¯ãŒã¯åºæã®æ§æãåŠçããããšãªãäœæ¥ãå®äºã§ããŸãã
詳现ã調ã¹ããšã
$ ããã«ãŒãããã¯ãŒã¯æ€æ» - voteapp_votenet
[
{
"åå": "- voteapp_votenet",
"Id": "7be1879036b217c072c824157e82403081ec60edfc4f34599674444ba01f0c57",
"ã¹ã³ãŒã": "ããŒã«ã«",
"ãã©ã€ã": "ããªããž"ã
"IPAM": {
"ãã©ã€ã": "ããã©ã«ã",
"ãªãã·ã§ã³": ãã«ã
"èšå®": [
{
"ãµãããã": "172.19.0.0/16",
"ã²ãŒããŠã§ã€": "172.19.0.1/16"
}
]
},
...
...
...
]
ã¢ããªã±ãŒã·ã§ã³ã忢ãããŸãããã
$ ããã«ãŒ-äœæ²ããŠã³
ããã§ãã¢ããªã±ãŒã·ã§ã³ãéçšããŒã ã«åŒãæž¡ãããã¹ããŒãžã³ã°ã§ãããã€ããããšä»®å®ããŸãã ãããã¯ãŒã¯ IT ã¯ã docker network ã³ãã³ãã䜿çšããŠäºåã«ãããã¯ãŒã¯ãäºåã«ããããžã§ãã³ã°ããããšã«ããããããã¯ãŒã¯ã管çããŸãã äŸãã°ïŒ
$ docker network create -d overlay --subnet=70.28.0.0/16 --gateway=70.28.5.254 voteapp_votenet
6d215748f300a0eda3878e76fe99e717c8ef85a87de0779e379c92af5d615b88
ãŸãã¯ããããã¯ãŒã¯ITã¯ãå¥ã®äœæãã¡ã€ã«ã远å ããããšã§ãæ¡åŒµæ©èœ(ãã®äœææ©èœã®è©³çްãèªã)ã䜿çšããŠãäžèšã®docker-composeã¢ããªã±ãŒã·ã§ã³ã®ãããã¯ãŒã¯æ§æãå¶åŸ¡ã§ããŸãã
"docker-compose.override.yml" ã¢ããªã±ãŒã·ã§ã³ã§äœã倿Žããå¿
èŠã¯ãããŸããã
$ cat docker-compose.override.yml
ããŒãžã§ã³ : "2"
ãããã¯ãŒã¯ïŒ
æç¥šããã:
ãã©ã€ããŒ:ãªãŒããŒã¬ã€
IPAM:
èšå®:
- ãµãããã: 70.28.0.0/16
ã²ãŒããŠã§ã€: 70.28.5.254
ãã®äŸã§ã¯ãã¹ããŒãžã³ã°ã§äœ¿çšããããããã¯ãŒã¯ ãã©ã€ããŒã¯ããã«ããã¹ã ãããã¯ãŒã¯æ¥ç¶ãæäŸãã "ãªãŒããŒã¬ã€" ã§ããããããã¯ãŒã¯ IT ããŒã ã¯ãã®ãããã¯ãŒã¯ã«åªå ãã IPAM èšå®ã䜿çšã§ããŸãã
$ docker-compose up -d
ãã©ã€ãããªãŒããŒã¬ã€ãã䜿çšãããããã¯ãŒã¯ã-voteapp_votenetãã®äœæ
voteapp_worker_1ã®éå§
ã¬ãã£ã¹ã®éå§
ããŒã¿ããŒã¹ã®éå§
voteapp_voting-app_1ã®éå§
voteapp_result-app_1ã®éå§
åãã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããšãä»åºŠã¯ããã«ããã¹ããããã¯ãŒã¯æ¥ç¶ãæäŸãããoverlayããšããååã®å¥ã®ãã©ã€ããŒã䜿çšããŠäœæããããããã¯ãŒã¯ãäœæãããŸãã ããã§ããdocker network inspectãã³ãã³ãã䜿çšããŠãããã¯ãŒã¯ãæ·±ãæãäžãããšããããã¯ãŒã¯ã®æ§æã«äœ¿çšãããŠããæ§ææžã¿ã®IPAMããããããã®ãããã¯ãŒã¯å ã®ãã¹ãŠã®ã³ã³ãããŒããã®ãµããããã«IPã¢ãã¬ã¹ãæã€ããã«ãªããŸãã
$ ããã«ãŒãããã¯ãŒã¯æ€æ» - voteapp_votenet
[
{
"åå": "- voteapp_votenet",
"Id": "b510c0affb2289548a07af7cc7e3f778987fc43812ac0603c5d01b7acf6c12be",
"ã¹ã³ãŒã": "ã°ããŒãã«",
"ãã©ã€ã": "ãªãŒããŒã¬ã€"ã
"IPAM": {
"ãã©ã€ã": "ããã©ã«ã",
"ãªãã·ã§ã³": ãã«ã
"èšå®": [
{
"
ãµãããã": "70.28.0.0/16",
"ã²ãŒããŠã§ã€": "70.28.5.254"
}
]
},
...
...
...
]
ãã® Compose ã¢ããªã±ãŒã·ã§ã³ã Docker Swarm ã§å®è¡ãããŠããå Žåãã³ã³ãããŒã¯ãã¹ãéã§ã¹ã±ãžã¥ãŒã«ãããŸããããªãŒããŒã¬ã€ ãã©ã€ããŒã¯ã³ã³ãããŒéã®ã·ãŒã ã¬ã¹ãªæ¥ç¶ãæäŸããŸãã ãããã¯ãã¹ãŠããã®ããã°æçš¿ã§èª¬æãããŠããDockerãããã¯ãŒãã³ã°ã®èšèšååã«ãã£ãŠå¯èœã«ãªããŸãã
ã¢ããªã±ãŒã·ã§ã³ã¯ãŸã çæ§ã§ã
åã«èšåããªãã£ãå Žåããã¹ãŠã®æäœã«çŠç¹ãåœãŠãæ§æããã§ãã¢ããªã±ãŒã·ã§ã³ã¯äŸç¶ãšããŠçæ§ã®ãŸãŸã§ãã ãããã£ãŠãæåã«è¿°ã¹ãããã«ãã§ããã ãå€ãã®ãããã¯ãŒã¯ã¢ãŒãã£ãã¡ã¯ããé衚瀺ã«ãããã£ãã®ã§ãããæåŸã«é衚瀺ã«ããå¿ èŠãããã®ã¯IPã¢ãã¬ã¹èªäœã§ãã IP ã¢ãã¬ã¹ã¯ãåºã«ãªãã€ã³ãã©ã¹ãã©ã¯ãã£ã«é¢ããäœããå ¬éããããã«ããã¢ããªã±ãŒã·ã§ã³ã®ç§»æ€æ§ãšã¯ã¹ããªãšã³ã¹ãäœäžããŸãã ã¢ããªã±ãŒã·ã§ã³ãã³ã³ãã€ã«æã«ç¥ã£ãŠããååã䜿çšããŠçžäºã«æ€åºã§ããå Žåã¯ãç§»æ€æ§ã®è©±ãå®äºããŸãã ããã¯ãŸãã«ãçµã¿èŸŒã¿DNSãµãŒããŒã䜿çšããŠæé»çãªã³ã³ããæ€åºãæäŸããããšã§éæãããã®ã§ãã ã³ã³ããã®ããªã³ã¯ãæ©èœãšããšã€ãªã¢ã·ã³ã°ãæ©èœã«ãããã³ã³ããã¯ã³ã³ãã€ã«æã«ç¥ã£ãŠããååã®ãã¢ã³ã³ãããæ€åºã§ããŸãã
Docker ãããã¯ãŒãã³ã°ãèªåã§è©ŠããŠã¿ããå Žåã¯ã次ã®ãªãœãŒã¹ã確èªããŠãã ããã
- ä»ããããã«ãŒãããŠã³ããŒã
- ãããã¯ãŒãã³ã°ã®ããŠããŒãã芧ãã ãã
- ãã®æŠèŠãŠã§ãããŒãèŠã
ããã«ãŒã«ã€ããŠãã£ãšç¥ã
- ããã«ãŒã¯åããŠã§ãã? 10åéã® ãªã³ã©ã€ã³ãã¥ãŒããªã¢ã«ãã詊ããã ãã
- ç¡æã® Docker Hub ã¢ã«ãŠã³ãã§ã€ã¡ãŒãžãå ±æãããã«ããèªååããŸã
- Docker 1.10 ãªãªãŒã¹ããŒããèªã
- ããã«ãŒãŠã£ãŒã¯ãªãŒã賌èªãã
- ä»åŸã® Dockerãªã³ã©ã€ã³ããŒãã¢ããã«ãµã€ã³ã¢ãããã
- ä»åŸã® Docker ããŒãã¢ããã«åå ãã
- DockerCon EU 2015 ã®ãããªãèŠã
- Docker ãžã®è²¢ç®ãéå§ãã