11æ 2024 æ¥ã®æŽæ°:ãåç §ããŠãã ããã Docker ãµãã¹ã¯ãªãã·ã§ã³ã®äŸ¡æ ŒããŒãž ã¢ããã°ã¬ãŒããããDockerãã©ã³ã®å Žåã ããã·ã³ãã«ã«ããã䟡å€ããããåªããéçºãšçç£æ§ãå®çŸããŸãã
Docker Desktop ã®ãªãªãŒã¹ ã³ã¬ã¯ã·ã§ã³ããèªã¿ã«ãªããææ°ã®æ¹åç¹ãšã€ãããŒã·ã§ã³ã«ã€ããŠã芧ãã ããã
â
æè¿ã®ãã¹ãŠã® å€æŽ ã«ãããããªãã®æ°ã®äººã ãDockerãã¹ã¯ãããã«ã€ããŠè©±ãããããå®éã«ãã·ã³äžã§äœãããã®ããçè§£ããããšããŠããŸãã äœäººãã®äººã ã¯ããããã¯åãªãã³ã³ããUIã§ãã?ããšå°ããŸãããÂ
åªããéçºè ããŒã«ã¯ãæ°ããéçºè ã«ãšã£ãŠéæ³ã§ãããçµéšè±å¯ãªéçºè ã®æéãå€§å¹ ã«ç¯çŽããŸãã ããããDockerãã¹ã¯ãããã§ããããšããŠããããšã§ãã Docker Desktop ã¯ãLinux ã®å Žåãšåæ§ã«ãMac ã Windows ã§ãç°¡åã«ã³ã³ãããæ§ç¯ãå ±æãå®è¡ã§ããããã«èšèšãããŠããŸãã Dockerã¯é¢åã§è€éãªã»ããã¢ãããåŠçãããããã³ãŒãã®èšè¿°ã«éäžã§ããŸããÂ
Dockerãã¹ã¯ããããéçºè ã®ããã«åŠçããéæ³ã«ã¯ã次ã®ãã®ããããŸãã
- Linux ããŒã«ãšã³ã³ãããŒãå®è¡ãããå®å šã§æé©åããã Linux VMÂ
- ãã¹ãOSãžã®ã·ãŒã ã¬ã¹ãªãã©ãã³ã°ã«ãããã³ã³ããã¯ãã¡ã€ã«ã·ã¹ãã ãšãããã¯ãŒã¯ã«ã¢ã¯ã»ã¹ã§ããŸãÂ
- KubernetesãDocker Composeãbuildkitãã¹ãã£ã³ãªã©ã®ãã³ãã«ãããã³ã³ããããŒã«Â
- ãã¹ãŠã®ã³ã³ããã³ã³ãã³ããèŠèŠçã«ç®¡çããããã®Dockerããã·ã¥ããŒãÂ
- MacãšãŠã£ã³ããŠãºã®ããã®ã·ã³ãã«ãªã¯ã³ã¯ãªãã¯ã€ã³ã¹ããŒã©Â
- äºåèšå®ãããå¥å šã§å®å šãªããã©ã«ã
- ã·ã¹ãã ãå®å šã«çšŒåãããããã®èªåå¢åæŽæ°
ãããã®ããã€ããããã«è©³ããèŠãŠãããŸããã!

1 ã€ã®ããã±ãŒãžããå§ããÂ
äžããå§ããŠãDockerãã¹ã¯ãããã¯MacãŸãã¯Windowsçšã®1ã€ã®ããã±ãŒãžãšããŠæäŸãããŸãã ããã«ãããã¯ã³ã¯ãªãã¯ã§Dockerã䜿çšããããã«å¿ èŠãªãã¹ãŠã®ãã®ãæ°ç§ã§ã»ããã¢ããããåäžã®ã€ã³ã¹ããŒã©ãŒããããŸããÂ
ãããããããè¡ããšãã«Dockerãã¹ã¯ããããã€ã³ã¹ããŒã«ããŠããã®ã¯äœã§ãã?
Dockerã«ãã£ãŠå®å šã«æ§ç¯ãããä¿å®ãããŠããŸã
Docker Desktop ã®äžå¿ã«ã¯ãDocker ã管çãã軜éã® LinuxKit VM ããããŸããÂ
ããã¯ãDocker Desktop for Mac ã§ã® 以åã®äœæ¥ ã®ãããªã顧客ãžã®åœ±é¿ã䌎ãããªãããŒãªåé¡ã«å¯ŸåŠããã®ã«åœ¹ç«ã€ããšãæå³ããŸãã Docker Desktop ã¯ããã® VM ãèšå®ããã ãã§ãªããå¿ èŠã«å¿ããŠã«ãŒãã« ãããããã®ä»ã®ã»ãã¥ãªãã£ä¿®æ£ããã°ã©ã ãé©çšããããšã§ããã® VM ãé·æã«ããã£ãŠææ°ã®ç¶æ ã«ä¿ã¡ãŸãã ããã«ããããšã¹ããŒãã§ç®¡çããŠããå¥ã®ãã·ã³ã€ã¡ãŒãžããªãã代ããã«DockerããããåŠçããŸãããã® VM ã¯ãå«ãŸããŠãããã¹ãŠã® Linux ããŒã«ãå®è¡ãããå Žæã§ãããDocker ãšã³ãžã³ã䜿çšããŠãããšãã«ãã¹ãŠã® Linux ã³ã³ãããŒãå®è¡ãããå Žæã§ããÂ
Windows ã§ã¯ããã® VM ã WSL2 ã§å®è¡ããUI ã§ãªã³ã«åãæ¿ããã ãã§ãWSL2 ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®ãã¹ãŠã® Docker ãžã®ã¢ã¯ã»ã¹æš©ãä»äžã§ããŸãã WSL 2 ããã¯ãšã³ãã®è©³çްã«ã€ããŠã¯ãã Docker ãã¹ã¯ããã WSL 2 ããã¯ãšã³ãã®çŽ¹ä» ããåç §ããŠãã ããã Mac (Intel ããã³ M1 ãã·ã³äž) ã§ã¯ãçŸåšã以åã® HyperKit å®è£ ããç§»è¡ããŠãApple ã®æ°ããä»®æ³åãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠãã® VM ãå®è¡ããŠããŸãã
Dockerãã¹ã¯ãããã«ã¯ããã®VMã®èšå®ã管çããããã®ã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ãæäŸãããMacã§ã¯ããããã¢ã¯ã»ã¹ã§ãããªãœãŒã¹(CPUãRAMãªã©)ã倿Žããããã®ããŒã«ãæäŸãããWindowsã§ã¯ãããã«ã¢ã¯ã»ã¹ã§ãããã£ã¹ããªãã¥ãŒã·ã§ã³ãéžæããããã®ããŒã«ãæäŸãããŸãã VMã«ãããšããããšã¯ãVMãå®è¡ããŠããã³ã³ããããã¹ããã·ã³äžã®ãã¡ã€ã«ã·ã¹ãã ã®ã©ã®é åã«ã¢ã¯ã»ã¹ã§ããããå¶éã§ããããšãæå³ããŸãã
ãã¹ããã·ã³ãšã®çµ±åÂ
Docker Desktopã䜿çšããããšã®ããã»ãšãã©ã®äººãæ°ä»ãããã«ãVMãæã£ãŠããã ãã§ã¯ãã®éæ³ã¯åŸãããŸããããDockerã䜿çšããããã«ãVMã«å ¥ããå¿ èŠã¯ãããŸããã 代ããã«ãããã¯ããŒã«ã«ãã·ã³äžã§ãã€ãã£ãã«æ©èœãããã®ããã«æ©èœããŸãã ããã¯ããããã¯ãŒã¯ãšãã¡ã€ã« ã·ã¹ãã ã®äž¡æ¹ã VM ã«çµ±åããŠããããããŒã«ã« ãã·ã³ã®ã·ãŒã ã¬ã¹ãªéšåã®ããã«èŠããããšã§å®çŸãããŸãã
ãããã¯ãŒãã³ã°ã䜿çšãããšãDocker Desktopã¯ããŒã«ã«ãã¹ãããŒããVMå ã®ããŒãã«ããããããããVMã®ããŒã80ãªã©ã§ã³ã³ãããå®è¡ããããŒã«ã«ãã¹ãã®ãã©ãŠã¶ããã¢ã¯ã»ã¹ããŠãå®è¡ããŠãããã®ã確èªã§ããŸãã ããã«å ããŠãVPNKitã䜿çšããŠãITéšéãè€éãªVPNããªã·ãŒãæ§æãããããããã¯ãŒã¯ãããã·ã®äœ¿çšãèŠæ±ãããããŠããå Žåã§ããåã³ã³ããããã¹ãäžã§ãã€ãã£ãã¢ããªãšããŠå®è¡ãããŠãããã®ããã«ããããã¯ãŒã¯ãã·ãŒã ã¬ã¹ã§ããããšãä¿èšŒããŸãã Dockerãã¹ã¯ãããã¯ããããã¹ãŠãèªååããå¿ èŠã«å¿ããŠå€æŽãå ããããã®ã·ã³ãã«ãªUIãæäŸããŸãã
ãããã¯ãŒã¯ã«å ããŠããã¡ã€ã«ã·ã¹ãã ã®çµ±åããããDocker Desktopã¯ãã¹ãããVMãžã®ãã€ã³ãããŠã³ããã»ããã¢ããããVMå ã®ããŒã«ã«ãã¡ã€ã«ã«(å¿ èŠã«å¿ããŠ)ã¢ã¯ã»ã¹ã§ããããã«ããŸãã ãã¡ã€ã«ã·ã¹ãã ã®å€æŽéç¥ (fsnotify/inotify ) ã¯ééçã«æ©èœãããœãŒã¹ã³ãŒãã倿Žããããšèªåçã«ããŒãžã®ãªããŒããããªã¬ãŒããŸãã ãŸããã³ã³ãããŒãããã¹ãã«ã«ãŒãã£ã³ã°ããŠãDocker ã³ã³ãããŒããã¹ãã§å®è¡ãããŠããããŒã«ã« ãµãŒãã¹ã«ã¢ã¯ã»ã¹ã§ããããã«ããããšãã§ããŸãã Mac ã§ã®ãã¡ã€ã«å ±æã®å®è£ ã«ã€ããŠè©³ããç¥ãããå Žåã¯ãDaveã®è©³çްãªããã°æçš¿ ãFUSEã䜿çšããæ°ããDockerãã¹ã¯ããããã¡ã€ã«å ±æã®å®è£ ã®è©³çްãã確èªããŠãã ãããÂ
æé«ã®ã³ã³ããããŒã«ãå«ãŸããŠããŸãÂ
ãã®çµ±åã¯ãã¹ãŠVMã«ãšã£ãŠçŽ æŽããããã®ã§ãããVMã®ã³ã³ãã³ãããªããã°ãå€ãã®ããšã¯æäŸãããŸããã ããããVM å ã«æé©ãª Linux ã³ã³ãã㌠ããŒã«ãã€ã³ã¹ããŒã«ããŠææ°ã®ç¶æ ã«ä¿ã€çç±ã§ããÂ
ã»ãšãã©ã®äººããDockerããšã¯ã¹ããªãšã³ã¹ãšèããã®ã¯ãDocker Engineã ãã§ãªããéçºè ãã³ã³ãããæäœããããã®ã·ãŒã ã¬ã¹ãªç°å¢ãäžç·ã«çæããè€æ°ã®ããŒã«ãå«ãã»ããã¢ããã§ãã ãã®äžå¿ã¯ãDockerãã¹ã¯ãããã®äžéšãšããŠå«ãŸããŠããOCIäºæã³ã³ããã»ã©ã³ã¿ã€ã ã§ããDockerãšã³ãžã³ã§ãã Docker Desktop ã«ã¯ããããžã®ã¢ã¯ã»ã¹ãæäŸãã Docker CLI ããã³ãã«ãããŠãããDocker Compose 2.0 ãå«ãŸããŠãããããéçºè ã¯ãæ°ã«å ¥ãã®ãã«ãã³ã³ãããããã§ã¹ã圢åŒãããŒã«ã«ã§æäœã§ããŸãã
Docker Desktop ã«ã¯ãDocker CLI ã®äžéšãšããŠãã«ãããããš buildx ãå«ãŸããŠãããããéçºè ã¯ããé«éãªãã«ãã«ã¢ã¯ã»ã¹ã§ããéçºè ã¯ä»»æã®ããŒã«ã« ãã·ã³ãã x86 ãŸã㯠ARM çšã«ãã«ãã§ããŸãã ããã«å ããŠãDocker Desktop ã«ã¯ãã€ã¡ãŒãžã®è匱æ§ãã¹ãã£ã³ããããã®ããŒã« (Docker ã¹ãã£ã³)ãDocker Hub ã§ã³ã³ãã³ããããŒã ãæäœããããã®ããŒã« (ããããŒã«)ãCLI ããçŽæ¥ AWS ECS ãš Microsoft Azure ACI ã«æ¥ç¶ããŠãããã€ããæ©èœ (Docker ã³ã³ããã¹ã) ãå«ãŸããŠããŸãã
ãããã¯Docker Desktopã®å¯äžã®Linuxã³ã³ããããŒã«ã§ã¯ãªããããŒã«ã®çŽ æŽãããã³ãã¥ããã£ãããããšã«æè¬ããŠãããéçºè ãšã¯ã¹ããªãšã³ã¹ã®äžéšãšããŠãå«ããã¹ãæè¯ã®ããŒã«ãåŒãç¶ãæ€èšããŠããŸãã æåã«å°å ¥ãããã®ã¯ãDocker Desktop ã§ã® Kubernetes (K8s) ã®ãµããŒãã§ããã ã¯ã³ã¯ãªãã¯ã§ãã¯ã©ã¹ã¿ãŒãå®è¡ããããã«ããŒã«ã«ã€ã¡ãŒãžã¹ãã¢ã§äœ¿çšã§ããããŒããã©ã³ãµãŒã䜿çšããŠK8sãã€ã³ã¹ããŒã«ããŠã»ããã¢ããã§ããŸãã
ã°ã©ãã£ã«ã«ã³ã³ãããŒã«Â
Docker Desktop ã®ãããã®ã³ã¢ ã³ã³ããŒãã³ãã¯ãã¹ãŠããããã®èšå®ã®å¶åŸ¡ãšç®¡çã«åœ¹ç«ã€ã·ã³ãã«ãªã°ã©ãã£ã«ã« ã€ã³ã¿ãŒãã§ã€ã¹ãä»å±ããŠããŸãã Macã®ã¡ãã¥ãŒããŒãšWindowsã®ã·ã¹ãã ãã¬ã€ã«å²ãŸããŠããDockerãã¹ã¯ãããã¯ãžã©ã®ã¢ã€ã³ã³ããããèšå®ã«ãžã£ã³ãããŠã¢ã¯ã»ã¹ããããã³ã¢ã¢ã¯ã·ã§ã³ãå¶åŸ¡ããããDockerããã·ã¥ããŒãã«ãžã£ã³ããããã§ããŸãã
Docker ããã·ã¥ããŒãã¯ãDocker ãã¹ã¯ãããäžã®ã³ã¢ Docker ã³ã³ããŒãã³ãã管çããããã®ç°¡çŽ åããã UI ãæäŸããŸãã Docker ããã·ã¥ããŒãã§ã¯ãããŒã«ã«ããã³ Docker Hub ã§ã® Docker ã€ã¡ãŒãžã®ç®¡çã ããŒã«ã«ã§å®è¡ãããŠããã³ã³ãã㌠ã®ç®¡çãããã³ Docker ããªã¥ãŒã ã管çããã³æ¢çŽ¢ããæ©èœããµããŒããããããã«ãªããŸãããÂ
ããŒã¿ãã«éçºè ããŒã«
Docker ãã¹ã¯ãããã«ã¯ãéçºç°å¢ãªã©ã®æ°æ©èœãå«ãŸããŠããŸãã éçºç°å¢ã䜿çšãããšãéçºè ã¯ãç°å¢ã®è©³çްãã³ãŒããšå ±ã« SCM ã§ããŒãžã§ã³ç®¡çããããšã§ãå埩å¯èœã§åçŸå¯èœãªéçºç°å¢ãç°¡åã«èšå®ã§ããããã«ãªããŸããã éçºè ãéçºç°å¢ã§äœæ¥ãããšãDocker Hub ãä»ããŠé²è¡äžã®ã³ãŒããšäŸåé¢ä¿ãã¯ã³ã¯ãªãã¯ã§å ±æã§ããŸãã ãã®åŸãéçºè ç°å¢ãšããŒã ã¡ã€ãã®ç°å¢ãåãæ¿ããŠããã©ã³ãéãç§»åããçŸåšã® Git ãã©ã³ãããç§»åããããšãªããé²è¡äžã®å€æŽã確èªã§ããŸãã ããã«ãããPR ã®ã¬ãã¥ãŒã¯ãæ°ããç°å¢ãéãã®ãšåããããç°¡åã«ãªããŸãã
ãã«ãã¢ãŒããã¯ãã£ã®ãµããŒã
ããããã¹ãŠã®ããŒã«ã«å ããŠãDocker Desktopã¯ãéžæããã·ã¹ãã ã¢ãŒããã¯ãã£ã«é¢ä¿ãªããããŒã«ã®äœ¿çšããµããŒãããŸãã Docker Desktop ã«å«ãŸãã Apple M1 ARM Mac ãš QEMU ã®ãµããŒãã«ãããäœæ¥äžã®ãã©ãããã©ãŒã ãäœã§ããããã«ãã¢ãŒããã¯ãã£ã€ã¡ãŒãž (Linux x86ãARMãWindows) ããã«ãããŠäœ¿çšããããšãã§ããŸããÂ
ããããã¹ãŠã®ã³ã³ããŒãã³ããšåæ§ã«ãDockerã®æŽæ°ã«ãããããããã¹ãŠã飿ºããŠåæãããèªåçã«é©çšãããææ°ã®ä¿®æ£ã§å®å šã«ãªããŸãã ããã«ãããããŒã ã®åæãç¶æãããåãããŒã«ã§å®å šã«äœæ¥ã§ããŸãã
ãŸããDocker ãµãã¹ã¯ãªãã·ã§ã³ã䜿çšãããšããããã®ã¢ã€ãã ã®ãããããããŒã ã§æ£åžžã«æ©èœãããéã«åé¡ãçºçããå Žåã¯ããã¹ãŠã®éçºè ã®çç£æ§ãç¶æããããã«ãããã¯ãè§£é€ããããã®ãµããŒããå©çšã§ããŸããÂ
ä»ããå§ãã
éå§ããã«ã¯ã Docker Desktop ãããŠã³ããŒãããŸãã éçºè ã¯ãŒã¯ãããŒã§ã® Docker ã®äœ¿çšã®è©³çްã«ã€ããŠã¯ã å ¥éã¬ã€ããã芧ãã ããã ç§ãã¡ã¯ããã¹ãŠã®ãã¹ã¯ããããŠãŒã¶ãŒåãã«æ°æ©èœã®éçºãç¶ããŠãããã客æ§ã®ãèŠæããåŸ ã¡ããŠãããŸãã®ã§ã ããŒããããã§ãç¥ãããã ãããÂ
Docker Desktop ã®ãªãªãŒã¹ ã³ã¬ã¯ã·ã§ã³ããèªã¿ã«ãªããææ°ã®æ¹åç¹ãšã€ãããŒã·ã§ã³ã«ã€ããŠã芧ãã ããã