éå» 10 幎éãã³ã³ããã¯ããé«ãã¬ãã«ã®äžè²«æ§ãšã¹ã±ãŒã©ããªãã£ãå°å ¥ããããšã§ ããœãããŠã§ã¢éçºã«é©åœããããããŸãã ã ããã«ãããéçºè ã¯äŸåé¢ä¿ã®ç®¡çãç°å¢ã®äžè²«æ§ãã³ã©ãã¬ãŒã·ã§ã³ ã¯ãŒã¯ãããŒãªã©ã®èª²é¡ããè§£æŸãããŸãã
éçºè ãã³ã³ããåã«ã€ããŠèª¿ã¹ããšããã³ã³ããã®å éšãã¢ãŒããã¯ãã£ãããã³ãã¹ãŠãã©ã®ããã«çµã¿åããããŠãããã«ã€ããŠåŠã¶ããšãã§ããŸãã ãããŠãæçµçã«ã¯ãcontainerdãšDockerã®éããšãããããäºãã«ã©ã®ããã«é¢é£ããŠãããã«ã€ããŠçåã«æããããããŸããã
ãã®ããã°èšäºã§ã¯ãcontainerdãšã¯äœããDockerãšcontainerdãã©ã®ããã«é£æºãããããããŠãããã®é·æãçµã¿åãããããšã§éçºè ã®ãšã¯ã¹ããªãšã³ã¹ãã©ã®ããã«åäžãããã«ã€ããŠèª¬æããŸãã

ã³ã³ãããšã¯
containerdãäœã§ãããã«é£ã³èŸŒãåã«ãã³ã³ãããšã¯äœããç°¡åã«ç¢ºèªããå¿ èŠããããŸãã ç°¡åã«èšãã°ã ã³ã³ãã ã¯åé¢ãšãªãœãŒã¹ç®¡çã远å ãããããã»ã¹ã§ãã ã³ã³ããã«ã¯ããã¹ãã·ã¹ãã ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ã§ããç¬èªã®ä»®æ³åãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããããŸããÂ
ã³ã³ãããŒã¯ããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã®ã«ãŒãã«æ©èœã䜿çšããŸãã åå空éã䜿çšããŠåé¢ãæäŸããcgroup ã䜿çšã㊠CPUãã¡ã¢ãªããããã¯ãŒã¯åž¯åå¹ ãªã©ã®ãªãœãŒã¹ãå¶éããã³ç£èŠããŸãã ãæ³åã®ãšãããã³ã³ããã®å éšã¯è€éã§ããã誰ããäœã¬ãã«ã®ãããã®å°éå®¶ã«ãªãããã®æéããšãã«ã®ãŒãæã£ãŠããããã§ã¯ãããŸããã ããã§åœ¹ç«ã€ã®ããcontainerd ã®ãããªã³ã³ãã㌠ã©ã³ã¿ã€ã ã§ãã
containerdãšã¯äœã§ãã?
èŠããã«ãcontainerdã¯ã³ã³ãããå®è¡ããããã«æ§ç¯ãããã©ã³ã¿ã€ã ã§ãã ãã® ãªãŒãã³ãœãŒã¹ããŒã«ã¯ ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ã«ãŒãã«æ©èœã®äžã«æ§ç¯ãããŠãããåå空éãcgroupããŠããªã³ãã¡ã€ã«ã·ã¹ãã ããããã¯ãŒã¯æ©èœãªã©ã管çããæœè±¡åã¬ã€ã€ãŒã䜿çšããŠã³ã³ãã管çãæ¹åããŸãã ããã«ãããéçºè ã¯è€éãªåé¡ãçŽæ¥åŠçããå¿ èŠããªããªããŸããÂ
2017幎3æãDockerã¯ã³ã¢ã³ã³ããã©ã³ã¿ã€ã ãcontainerdãšããã¹ã¿ã³ãã¢ãã³ãããžã§ã¯ãã«åã蟌ã¿ãCloud Native Computing Foundation(CNCF)ã«å¯èŽããã2019幎2æãŸã§ã«ãcontainerdã¯CNCFå ã®æ®µéçæç床ã¬ãã«ã«éãããã®éèŠãªéçºãæ¡çšãããã³ã³ãã¥ããã£ãµããŒãã衚ããŠããŸãã仿¥ãéçºè ã¯containerdãããã®ã¹ã±ãŒã©ããªãã£ãããã©ãŒãã³ã¹ãå®å®æ§ã§ç¥ãããæ¥çæšæºã®ã³ã³ããã©ã³ã¿ã€ã ãšããŠèªèããŠããŸãã
Containerd ã¯ãå€ãã®ãŠãŒã¹ã±ãŒã¹ãæã€é«ã¬ãã«ã®ã³ã³ãã㌠ã©ã³ã¿ã€ã ã§ãã å°èŠæš¡ãªãããã€ã§ã³ã³ããã®ã¯ãŒã¯ããŒããåŠçããã®ã«æé©ã§ãããå€§èŠæš¡ãªãšã³ã¿ãŒãã©ã€ãºã¬ãã«ã®ç°å¢(Kubernetesãå«ã)ã«ãé©ããŠããŸããÂ
containerdã®å ç¢æ§ã®éèŠãªèŠçŽ ã¯ã Open Container Initiative (OCI)æºæ ã®ã©ã³ã¿ã€ã ãããã©ã«ãã§äœ¿çšããŠããããšã§ãã containerdã¯ãrunc(äœã¬ãã«ã®ã³ã³ããã©ã³ã¿ã€ã )ãªã©ã®ã©ã³ã¿ã€ã ã䜿çšããããšã§ãã³ã³ããåãããç°å¢ã§ã®æšæºåãšçžäºéçšæ§ã確ä¿ããŸãããŸããã³ã³ããã®äœæãèµ·åã忢ãªã©ãã³ã³ããã®ã©ã€ããµã€ã¯ã«ã«ãããã³ã¢æäœãå¹ççã«åŠçããŸãã
containerdã¯Dockerãšã©ã®ããã«é¢é£ããŠããŸãã?
ããããcontainerdã¯Dockerãšã©ã®ããã«é¢é£ããŠããŸãã? ããã«çããããã«ãDockerã®ã¢ãŒããã¯ãã£ã倧ãŸãã«èŠãŠã¿ãŸããã(å³ 1)ãÂ
containerdã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšçŽæ¥é£æºããããšã§ãã³ã³ããã®æäœã容æã«ããŸãã Docker Engine 㯠containerd ã®äžã«ããã远å ã®æ©èœãšéçºè ãšã¯ã¹ããªãšã³ã¹ã®åŒ·åãæäŸããŸãã

Docker ãš containerd ã®çžäºäœçš
ãã®çžäºäœçšãããããçè§£ããããã«ãã³ãã³ããå®è¡ã docker run ããšãã«äœãèµ·ãããã«ã€ããŠèª¬æããŸãããã
- Enter ããŒãéžæãããšã Docker CLI ã¯ã
runREST API åŒã³åºããä»ããŠã³ãã³ããšã³ãã³ãã©ã€ã³åŒæ°ã Docker ããŒã¢ã³ (dockerd) ã«éä¿¡ããŸãã - dockerdã¯ãªã¯ãšã¹ããè§£æããŠæ€èšŒããã³ã³ããã€ã¡ãŒãžãªã©ãããŒã«ã«ã§å©çšå¯èœãã©ããããã§ãã¯ããŸãã ããã§ãªãå Žåã¯ãæå®ãããã¬ãžã¹ããªããã€ã¡ãŒãžããã«ãããŸãã
- ã€ã¡ãŒãžã®æºåãæŽããšãdockerd ã¯å¶åŸ¡ã containerd ã«ç§»ããã€ã¡ãŒãžããã³ã³ãããŒãäœæããŸãã
- 次ã«ãcontainerdãã³ã³ããç°å¢ãèšå®ããŸãã ãã®ããã»ã¹ã«ã¯ãã³ã³ãããŒã»ãã¡ã€ã«ã»ã·ã¹ãã ããããã¯ãŒã¯ã»ã€ã³ã¿ãŒãã§ãŒã¹ããã®ä»ã®å颿©èœã®ã»ããã¢ãããªã©ã®ã¿ã¹ã¯ãå«ãŸããŸãã
- containerd ã¯ãshim ããã»ã¹ã䜿çšããŠãã³ã³ãããŒã®å®è¡ã runc ã«å§ä»»ããŸãã ããã«ãããã³ã³ãããŒãäœæãããèµ·åããŸãã
- æåŸã«ãã³ã³ãããå®è¡ããããšãcontainerdã¯ã³ã³ããã®ã¹ããŒã¿ã¹ãç£èŠããããã«å¿ããŠã©ã€ããµã€ã¯ã«ã管çããŸãã
Docker ãš containerd: çžä¹å¹æÂ
Dockerã¯ãcontainerdã®èšç«ããCNCFãžã®å¯èŽããããŠãã以éã«è³ããŸã§ãcontainerdã®äœæãšæ¡çšã«ãããŠéèŠãªåœ¹å²ãæãããŠããŸããã ãã®é¢äžã¯ãã³ã³ããã©ã³ã¿ã€ã ãæšæºåããcontainerdã®éçºãžã®ãªãŒãã³ãœãŒã¹ã³ãã¥ããã£ã®é¢äžã匷åããã®ã«åœ¹ç«ã¡ãŸããã Dockerã¯ãcontainerdãç¶ç¶çã«ç¶æããã³é²åãããããšã§ããªãŒãã³ãœãŒã¹ã³ã³ãããšã³ã·ã¹ãã ã®é²åããµããŒããç¶ããŠããŸãã
containerd ã¯ãå®è¡äžã®ã³ã³ãããŒã®ã³ã¢æ©èœã«ç¹åããŠããŸãã ããã¯ãäœã¬ãã«ã®ã³ã³ããå éšããã®ä»ã®é«åºŠãªæ©èœã«ã¢ã¯ã»ã¹ããå¿ èŠãããéçºè ã«æé©ã§ãã Docker 㯠containerd äžã«æ§ç¯ãããã³ã³ãããŒãæ§ç¯ãå®è¡ããã¹ããæ€èšŒãå ±æããããã®ãŸãšãŸãã®ããéçºè ãšã¯ã¹ããªãšã³ã¹ãšå æ¬çãªããŒã«ãã§ãŒã³ãäœæããŸãã
ãã«ã + å®è¡
éçºç°å¢ã§ã¯ãDocker DesktopãDocker CLIãDocker Compose ãªã©ã®ããŒã«ã䜿çšãããšãéçºè ã¯åäžãŸãã¯è€æ°ã®ã³ã³ãããŒç°å¢ãç°¡åã«å®çŸ©ãæ§ç¯ãå®è¡ãããæ°ã«å ¥ãã®ãšãã£ã¿ãŒã IDEãããã«ã¯ CI/CD ãã€ãã©ã€ã³ãšã·ãŒã ã¬ã¹ã«çµ±åã§ããŸããÂ
詊éš
éçºè ãšã¯ã¹ããªãšã³ã¹ã®æå€§ã®åé¡ç¹ã® 1 ã€ã¯ããã¹ããšç°å¢ã®äžè²«æ§ã§ãã Testcontainers ã䜿çšãããšãéçºè ã¯ç°å¢ (éçºãã¹ããŒãžã³ã°ããã¹ããéçšãªã©) éã®åçŸæ§ã«ã€ããŠå¿é ããå¿ èŠã¯ãããŸããããŸããTestcontainers ã䜿çšãããšãéçºè ã¯ã³ã³ãããŒã䜿çšããŠãåé¢ãããäŸåé¢ä¿ã®ç®¡çã䞊åãã¹ããCI/CD çµ±åã®ç°¡çŽ åãè¡ãããšãã§ããŸãã
æ€èšŒ
Docker Scoutã¯ãã³ã³ããã€ã¡ãŒãžãåæãããœãããŠã§ã¢éšå衚(SBOM)ãäœæããããšã§ãDocker DesktopãDocker HubããŸãã¯Docker CLIãšé£æºããŠãçµç¹ã®ã·ããã¬ãããæ¯æŽããŸãããŸããéçºè ã¯ã³ã³ããã€ã¡ãŒãžå ã®ãœãããŠã§ã¢ã®è匱æ§ãèŠã€ããŠä¿®æ£ããå®å šãªãœãããŠã§ã¢ãµãã©ã€ãã§ãŒã³ã確ä¿ããããšãã§ããŸãã
å ±æ
Docker Registry ã¯ãéçºè ãã³ã³ããã€ã¡ãŒãžãå ±æãªããžããªã«å®å šã«ããã·ã¥ããããã®ã¹ãã¢ãšããŠæ©èœããŸãã ãã®æ©èœã«ãããã€ã¡ãŒãžã®å ±æãåçåãããéçºãšå±éã®ã¯ãŒã¯ãããŒã®äžè²«æ§ãšå¹çã®ç¶æã容æã«ãªããŸããÂ
Dockerãcontainerdäžã«æ§ç¯ãããŠããããããœãããŠã§ã¢éçºã©ã€ããµã€ã¯ã«ã¯ãæ¬çªç°å¢ãžã®å®å šãªãããã€ã®ããã®å éšã«ãŒããšãã¹ãã®æ©æµãåããŸãã
ãŸãšã
ãã®èšäºã§ã¯ãDocker ãš containerd ã®é¢ä¿ã«ã€ããŠèª¬æããŸããã åé¢ãããããã»ã¹ãšããŠã®ã³ã³ãããããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®æ©èœã掻çšããŠãå¹ççã§ã¹ã±ãŒã©ãã«ãªéçºããã³ãããã€ãœãªã¥ãŒã·ã§ã³ãæäŸããæ¹æ³ã瀺ããŸããã ãŸããcontainerdãšã¯äœããDockerãã¹ã¿ãã¯ã§containerdãã©ã®ããã«æŽ»çšãããã«ã€ããŠã説æããŸãããÂ
Dockerã¯containerdäžã«æ§ç¯ãããéçºè ã®ãšã¯ã¹ããªãšã³ã¹ãåäžãããã³ã³ããã®æ§ç¯ãå®è¡ãæ€èšŒãå ±æããã¹ãã«ãããéçºã©ã€ããµã€ã¯ã«å šäœã«å¯Ÿå¿ããå æ¬çãªããŒã«ã¹ã€ãŒããæäŸããŸããÂ
Dockerã® ãªãŒãã³ãœãŒã¹ãããžã§ã¯ã ãš æã人æ°ã®ãããªãŒãã³ãœãŒã¹ããŒã«ããã§ãã¯ããŠãcontainerdããã®ä»ã®ã³ã³ããã³ã³ããŒãã³ãã䜿çšããŠæ¬¡ã®ãããžã§ã¯ããéå§ããŸããÂ
ããã«è©³ãã
- Docker Newsletter ã賌èªããŠãã ããã
- Docker ãã¹ã¯ãããã®ææ°ãªãªãŒã¹ãå ¥æããŸãã
- 質åããããŸãã? Docker ã³ãã¥ããã£ããæäŒãããŸãã
- ããã«ãŒã¯åããŠã§ãã? å§ããŸãããã