ãä»çµã¿è§£èª¬ãDockerã¯ã©ããã£ãŠã³ã³ãããåãããŠããã®ã â ä»®æ³åãšã®éããå³è§£
Dockerã£ãŠããèããã©ãã³ã³ããã£ãŠçµå±ãªããªã®ïŒä»®æ³ãã·ã³ãšã¯éãã®ïŒ
ãã質åã ããä»®æ³ãã·ã³ã¯ããŒããŠã§ã¢ããšäžžããšãšãã¥ã¬ãŒãããŠããã®äžã«ã²ã¹ãOSãèŒããä»çµã¿ãªãã ãäžæ¹ã³ã³ããã¯ããã¹ãOSã®ã«ãŒãã«ãå ±æããªãããã¢ããªã±ãŒã·ã§ã³ã®å®è¡ç°å¢ã ããéé¢ããæè¡ã ããã ããVMãããã£ãšè»œéã§ãèµ·åãæ°ç§ã§æžããã ã
ã«ãŒãã«ãå ±æããã£ãŠããšã¯ãå®å šã«åé¢ãããŠãªãã£ãŠããšïŒããã§å®å šãªã®ïŒ
ããã§æŽ»èºããã®ãLinuxã®ãnamespaceïŒããŒã ã¹ããŒã¹ïŒããšããä»çµã¿ã ããnamespaceã¯ããã»ã¹IDããããã¯ãŒã¯ããã¡ã€ã«ã·ã¹ãã ããŠãŒã¶ãŒIDãªã©ãã³ã³ããããšã«éé¢ããŠããããã ãã³ã³ããAããã¯ã³ã³ããBã®ããã»ã¹ãèŠããªããããããã¯ãŒã¯ãå¥ã ã«ãªããã«ãŒãã«ã¯å ±æããŠããã©ãåã³ã³ããã¯èªåã ãã®äžçã«ããããã«æ¯ãèãããã ãã
ãªãã»ã©ïŒããããããã³ã³ãããã¡ã¢ãªãCPUã䜿ããããŠä»ã«è¿·æããããããªãã®ïŒ
ãããé²ãã®ããcgroupsïŒã³ã³ãããŒã«ã°ã«ãŒãïŒãã ããcgroupsã¯CPUæéãã¡ã¢ãªäœ¿çšéããã£ã¹ã¯I/Oããããã¯ãŒã¯åž¯åãªã©ã®ãªãœãŒã¹ãã³ã³ããããšã«å¶éã§ããä»çµã¿ãªãã ãããšãã°ããã®ã³ã³ããã¯ã¡ã¢ãª512MBãŸã§ããšèšå®ããã°ããã以äžã¯äœ¿ããªããnamespaceããèŠããç¯å²ã®éé¢ããªããcgroupsã¯ã䜿ããéã®å¶éããšèŠãããšãããã
Dockerã€ã¡ãŒãžã¯ãUnion FSïŒãŠããªã³ãã¡ã€ã«ã·ã¹ãã ïŒããšããã¬ã€ã€ãŒæ§é ã«ãªã£ãŠãããã ãDockerfileã®ååœä»€ïŒFROMãRUNãCOPYãªã©ïŒã1ã€ã®ã¬ã€ã€ãŒã«ãªã£ãŠããããç©ã¿éãªã£ãŠã€ã¡ãŒãžãã§ãããããšãã°ããŒã¹OSã®ã¬ã€ã€ãŒãããã±ãŒãžã€ã³ã¹ããŒã«ã®ã¬ã€ã€ãŒãã¢ããªã³ãŒãã®ã¬ã€ã€ãŒãšããå ·åã ããåã¬ã€ã€ãŒã¯èªã¿åãå°çšã§ãã³ã³ããèµ·åæã«ãã®äžã«æžã蟌ã¿å¯èœãªã¬ã€ã€ãŒã1æè¿œå ãããä»çµã¿ã ãã
ã¬ã€ã€ãŒãåãããŠããšäœãããããã®ïŒ
倧ããªã¡ãªããã¯2ã€ãããã1ã€ç®ã¯ããã£ãã·ã¥ããDockerfileã倿ŽããŠãã«ããçŽããšããå€ãã£ãŠããªãã¬ã€ã€ãŒã¯åå©çšãããããããã«ããé«éã«ãªãã2ã€ç®ã¯ãå ±æããåãããŒã¹ã€ã¡ãŒãžã䜿ãè€æ°ã®ã³ã³ããããã£ãŠããå ±éã¬ã€ã€ãŒã¯ãã£ã¹ã¯äžã§1ã³ããŒã ãä¿æããããããã¹ãã¬ãŒãžãç¯çŽã§ãããã ããããDockerå¹çã®ã«ã®ã ãã
Dockerã£ãŠå®éã«ã¯ã©ãããã³ã³ããŒãã³ãã§åããŠãã®ïŒdocker runãããè£ã§äœãèµ·ããŠãã®ïŒ
çŸä»£ã®Dockerã¯å€§ãã3å±€æ§é ã«ãªã£ãŠãããããŸããŠãŒã¶ãŒãæäœãããDocker CLIããæ¬¡ã«ã³ã³ããã®ã©ã€ããµã€ã¯ã«ã管çãããcontainerdïŒã³ã³ãããã£ãŒïŒãããããŠå®éã«namespaceãcgroupsãèšå®ããŠã³ã³ããããã»ã¹ãèµ·åãããruncïŒã©ã³ã·ãŒïŒãã ãdocker runãå®è¡ãããšãCLIãDocker Daemonã«æç€ºãéããcontainerdãã€ã¡ãŒãžã®æºåãããŠãruncãLinuxã«ãŒãã«ã®æ©èœã䜿ã£ãŠã³ã³ãããç«ã¡äžããæµãã ãã
containerdãšãruncã£ãŠãDockerå°çšã®ãã®ãªã®ïŒ
å®ã¯ãããããªããã ããããã¯OCIïŒOpen Container InitiativeïŒãšããæ¥çæšæºã«åºã¥ããŠäœãããŠããããOCIã¯ã³ã³ããã€ã¡ãŒãžã®åœ¢åŒãšã©ã³ã¿ã€ã ã®ä»æ§ãæšæºåãããã®ã§ãDocker以å€ã®ããŒã«ïŒPodmanãKubernetesãªã©ïŒãåãæšæºã«æºæ ããŠãããã ãã ããDockerã§äœã£ãã€ã¡ãŒãžãKubernetesã§ãã®ãŸãŸåãããã®ãããã®æšæºåã®ãããã ãã
ã³ã³ããæè¡ã£ãŠå¥¥ãæ·±ããã ãâŠãçµå±ãDockerããã£ãŠããããšããŸãšãããšã©ããªãã®ïŒ
ãŸãšãããšãDockerã¯Linuxã«ãŒãã«ãæã€namespaceïŒéé¢ïŒãcgroupsïŒãªãœãŒã¹å¶éïŒãUnion FSïŒã¬ã€ã€ãŒæ§é ïŒãšãã3ã€ã®èŠçŽ æè¡ãçµã¿åãããŠãã¢ããªã®å®è¡ç°å¢ãããã±ãŒãžã³ã°ããŠãããã ãVMã®ããã«OSããšä»®æ³åããã®ã§ã¯ãªããã«ãŒãã«ãå ±æããããšã§è»œéã»é«éãå®çŸããŠããããããŠcontainerdãruncãšãã£ãOCIæºæ ã®ã³ã³ããŒãã³ããå®éã®åŠçãæ åœããŠããããããšã³ã·ã¹ãã å šäœã§äºææ§ãä¿ãããŠãããã ããã³ã³ããã¯ãéæ³ããããªããŠãLinuxã®æ©èœãè³¢ãçµã¿åãããæè¡ã ãšããããšãèŠããŠãããšãããã