ç»åã®è©³çްãšãã¹ããã©ã¯ãã£ã¹
ã€ã¡ãŒãžã¯ãã³ã³ãããå®è¡ããããã®ãã¹ãŠã®ãã¡ã€ã«ããã€ããªãã©ã€ãã©ãªãããã³æ§æãå«ãæšæºåãããããã±ãŒãžã§ãã ã€ã¡ãŒãžã¯ã¬ã€ã€ãŒã«æ§é åãããã€ã¡ãŒãžã®æ§ç¯ãšã³ã³ããã®äœ¿çšã®äž¡æ¹ã§åå©çšãä¿é²ããŸãã ãã«ãã®ãã¹ããã©ã¯ãã£ã¹ãçè§£ããããšã¯ãã€ã¡ãŒãžãè¿ éãã€å®å šã«ãã«ãããããã«äžå¯æ¬ ã§ãã
ã€ã¡ãŒãžã®è©³çްãšãã«ãã®ãã¹ã ãã©ã¯ãã£ã¹ ãã¬ãŒã³ããŒã·ã§ã³ã§ã¯ãã€ã¡ãŒãžãš Docker ãã«ã ã·ã¹ãã ã«ã€ããŠèª¬æããŸãã ã€ã¡ãŒãžã®æ§é ãDockerfile ã®äœææ¹æ³ãã€ã¡ãŒãžã®äœæã«é¢ãããã¹ã ãã©ã¯ãã£ã¹ããã«ã ãã£ãã·ã³ã°ããã«ãã¹ããŒãž ãã«ãããã«ãã¢ãŒããã¯ã㣠ãã«ããDocker Build Cloud ã䜿çšããè¶ é«éãã«ããªã©ã®ç¹å®ã®æ©èœã«ã€ããŠèª¬æããŸãã
ããã¯ãDocker Image Deep Dive and Build Best Practices Tech Talk ã§ãã
ç®æ¬¡
- ã€ã³ãã (0:05)
- ãŠããªã³ãã¡ã€ã«ã·ã¹ãã ãçè§£ãã (1:59)
- ãŠããªã³ãã¡ã€ã«ã·ã¹ãã ã®çšèª (4:52)
- ã€ã¡ãŒãžãæåã§äœæãã (6:29)
- ã¬ã€ã€ãŒã®å¯èŠå (8:44)
- ã€ã¡ãŒãžæ§ç¯ã®ãã¹ããã©ã¯ãã£ã¹ (10:21)
- ã€ã¡ãŒãžãŽãŒã« (12:40)
- ãã«ããã£ãã·ã¥(15:50)
- ãã£ãã·ã¥ãå£ããå Žæãç¹å®ãã (17:47)
- ãã«ãã¹ããŒãžãã«ã (21:41)
- ææ°ã®ãã«ããšDockerfileã®æ©èœ(24:59)
- ãã«ãã¢ãŒããã¯ã㣠(26:57)
- Docker Desktop GUI ãã«ããã¥ãŒ (29:44)
- 詳现æ å ±
ã€ã³ãã (0:05)
Docker ã€ã¡ãŒãžã¯ã茞éçšã³ã³ãããšäŒŒãŠããŸãã 茞éçšã³ã³ããã«ã¯ãããããçš®é¡ã®ãã®ãå ¥ããããšãã§ããŸãã é£ã¹ç©ãæã€ããšããå®¶å ·ã眮ãããšãã建ç¯è³æãæã€ããšãã§ããã Docker ã€ã¡ãŒãžãåãã§ããããœãããŠã§ã¢ãé€ããŸãã Docker ã€ã¡ãŒãžã« Web ãµãŒããŒãå«ããããšããã¢ããªã±ãŒã·ã§ã³ãããŒã¿ããŒã¹ãã¡ãã»ãŒãž ãã¥ãŒãªã©ãããŸããŸãªãã®ãæã€ããšãã§ããŸãã ãã®ãããã€ã¡ãŒãžã¯ããã®å éšã«ååšããå¯èœæ§ã®ããããããã¹ãŠã®ç°ãªãã¿ã€ãã®ãœãããŠã§ã¢ãåŠçã§ããã»ã©æè»æ§ãããå¿ èŠããããŸãã ããŠã 2015幎ã«ããã®ãŒããšãDockerã¯Open Container InitiativeãäœæããŸããã Open Container Initiativeã¯ãã³ã³ããã«é¢ããäžé£ã®æšæºã§ãã çŸåšã¯ Linux Foundation ãææããŠããã3 ã€ã®ä»æ§ããããŸãã ã€ã¡ãŒãžä»æ§ããããã€ã¡ãŒãžã®æ§é ãšãããã§ã¹ããèšè¿°ããŠããŸãã OCIã€ã¡ãŒãžã®å®è¡æ¹æ³ãå®çŸ©ããã©ã³ã¿ã€ã 仿§ãšãã³ã³ãã³ããããã·ã¥ããã«ãæ€åºããããã®APIãããã³ã«ãå®çŸ©ããé åžä»æ§ããããŸãã ç»åã®è©³çްã«å ¥ãåã«ãããèããã質åã1ã€ãããŸããããã¯ãç»åã«ã¯ããŸããŸãªã¢ãŒããã¯ãã£ãããçç±ã§ãã ã³ã³ããã¯ç¹å®ã®ã«ãŒãã«ãšç¹å®ã®ãããã»ããã«é¢é£ä»ããããããã»ã¹ã§ãããããç°ãªã OS ã§ç°ãªããããã»ããããµããŒãã§ããããã«ããã«ã¯ãç°ãªãããŒãžã§ã³ãååšããå¿ èŠããããŸãã ãã®ãããç»åã®äžã«ã¢ãŒããã¯ãã£ã¿ã°ã衚瀺ãããŸãã ããã§ãç¹å®ã®ãã·ã³ã«ã€ã¡ãŒãžããã«ããŠã³ãããšãã©ã®ã¢ãŒããã¯ãã£ãããã«ããŠã³ããŠããããèªåçã«èªèãããæ£ããã€ã¡ãŒãžããã«ããŠã³ãããããããããæ°ã«ããã«å®è¡ã§ããŸãã ããããã€ã¡ãŒãžãæ§ç¯ããŠããå Žåã¯ããã®ã€ã¡ãŒãžãå®éã«å®è¡ããã¢ãŒããã¯ãã£ã«ã€ããŠå¿é ããå¿ èŠããããŸãã ããã«ã€ããŠã¯ããã¬ãŒã³ããŒã·ã§ã³ã§è©³ãã説æããŸãã
ãŠããªã³ãã¡ã€ã«ã·ã¹ãã ãçè§£ãã (1:59)
ããŠãããã§ã¯ãã€ã¡ãŒãžãæ§æãããŠããªã³ ãã¡ã€ã« ã·ã¹ãã ãšãã€ã¡ãŒãžã®æ§é ãçè§£ããŸãããã ãããã£ãŠãããã§ã¯nginxã€ã¡ãŒãžããã«ããäŸã瀺ããŸãã ãããŠãããã®å³åŽãèŠããšãèªåã§åŒã£åŒµããšãããªæãã«ãªããŸãã ããã«ã¯æåãšæ°åã®ç°ãªãè¡ãããã€ãããããã«ãšãã«ãšæžãããŠããããã«ã³ã³ããªãŒããšæžãããŠããŸãã ãããã«ããã§ã«ååšããããšè¡šç€ºãããå ŽåããããŸãã ããã§åé¡ãšãªãã®ã¯ããããã®ãã®ãå®éã«åŒã£åŒµãããŠããã®ã¯äœãªã®ãããããŠãããã©ã®ããã«ããŠã³ã³ããã«ãªãã®ããšããããšã§ãã
ãããšããããã®ãã®ã®äžã€äžã€ãã¬ã€ã€ãŒã§ãããã¬ã€ã€ãŒã¯ãäºãã«éãªãåããã¡ã€ã«ã·ã¹ãã ã®å€æŽã®ã»ããã§ãã ãããã£ãŠããããèŠããšãã¬ã€ã€ãŒ 1ãã¬ã€ã€ãŒ 2ãããã³ããŒãžãããã¬ã€ã€ãŒã衚瀺ãããŸãã åã¬ã€ã€ãŒã¯ããã¡ã€ã«ã远å ãåé€ããŸãã¯åé€ã§ããŸãã ããŠããŠããªã³ããããã¡ã€ã«ã·ã¹ãã ã§ã¯ãããããã¹ãŠãäžç·ã«ãã«ãããŸãã ããã®ã¬ã€ã€ãŒ 1ã§ã¯ããã¡ã€ã« 1ããã¡ã€ã« 2ããã¡ã€ã« 3ããã¡ã€ã« 4ã远å ããŠããŸãã ã¬ã€ã€ãŒ 2 ã¯ãæ°ããããŒãžã§ã³ã®ãã¡ã€ã« 2ã远å ããããã«ããã¡ã€ã« 5 ã远å ããŸãã ãããã£ãŠãããŒãžãããããŒãžã§ã³ã§ã¯ããã®ã€ã¡ãŒãžãã³ã³ãããšããŠå®è¡ãããå Žåã«ååšãããã®ããã¡ã€ã«1ãã¬ã€ã€ãŒ2ããã®ãã¡ã€ã«2ããã¡ã€ã«3ããã¡ã€ã«4ãããã³ãã¡ã€ã«5ã«ãªããŸãããããã®ã¬ã€ã€ãŒãããããååŸããããããããŒãžãããããŒãžã§ã³ã«ãŸãšããŸãã ãã®ããã«ããããšã«ã¯ããã€ãã®å©ç¹ããããŸãããããã«ã€ããŠããã«é²ãã«ã€ããŠèª¬æããŸãã
ã§ã¯ãåé€ããããã¡ã€ã«ã«ã€ããŠã¯ã©ãã§ãããã? ããé«åºŠãªã¬ã€ã€ãŒã®ãã¡ã€ã«ãåé€ããå¿ èŠãããå Žåã¯ã©ãããã°ããã§ãã? ããŠããããã©ã®ãããªãã®ã«ãªããèŠãŠã¿ãŸãããã ããã«ã¯ã¬ã€ã€ãŒ 3ããããã¬ã€ã€ãŒ 1ããäœããåé€ããå¿ èŠããããŸãã ããã§ãåã¬ã€ã€ãŒã¯ãæžã蟌ãŸãããšäžå€ã«ãªããŸãã ã¬ã€ã€ãŒã¯ãå®éã«ãã¡ã€ã«ã·ã¹ãã ã«æžã蟌ãŸããåŸã¯å€æŽã§ããŸããã ãããã£ãŠãã¬ã€ã€ãŒ 3ã§ã¯ããã¡ã€ã« 4ãåãé€ãå¿ èŠãããå Žåãç§ãè¡ãããšã¯ãã€ã³ã¯ãæžãããçŽãããããããäžæžãããå¿ èŠãããå Žåãšéåžžã«ãã䌌ãŠããŸãã ãã¯ã€ãã®ããã«ãåãåºããŠããã®ããã¹ããçŽã«èŠãããã®äžã«æžããŸãã ããããŸãã«ç§ãã¡ãããã§è¡ã£ãŠããããšã§ãã ã¬ã€ã€ãŒ 3ã«ååšãããã¯ã€ãã¢ãŠããã¡ã€ã«ãäœæããŠãããããããŒãžããããã¡ã€ã«ã·ã¹ãã ã§ã¯ãå®è¡äžã®ã³ã³ããã§ãã¡ã€ã« 4 ã衚瀺ãããªããªããŸãã ããŠãããã§çè§£ãã¹ãéåžžã«éèŠãªéšåã¯ããã¡ã€ã« 4 ããŸã ã¬ã€ã€ãŒ 1ã«ååšãããšããããšã§ãã ã¬ã€ã€ãŒ 1 ã¯ãå®éã«ãã¡ã€ã«ã·ã¹ãã ã«æžã蟌ãŸããæç¹ããäžå€ã§ãã ãããã£ãŠãããŒãžãããããŒãžã§ã³ã§è¡šç€ºãããªããããšãã£ãŠããŸã ããã«ãªãããã§ã¯ãããŸããã ããã«ã€ããŠã¯ãã»ãã¥ãªãã£ã«é¢ããæžå¿µã«ã€ããŠã¯ãåŸã»ã©èª¬æããŸãã
ãŠããªã³ãã¡ã€ã«ã·ã¹ãã ã®çšèª (4:52)
ã§ã¯ãããã§ã®çšèªãèŠãŠãäœãèšã£ãŠããã®ããçè§£ããŸãããã æžã蟌ãŸããã¬ã€ã€ãŒã¯äžäœãã£ã¬ã¯ããªã§ãã ç§ãèšã£ãããã«ããããã¯äžå€ã§ãã ãããã¯èªã¿åãå°çšã§ãã äžäœãã£ã¬ã¯ããªã¯æžã蟌ã¿å¯èœãªã¹ããŒã¹ã§ãã ãããã£ãŠããã®ç¹å®ã®ã€ã¡ãŒãžãç©æ¥µçã«ãã«ãããããã³ã³ããã§å®è¡ããŠå®éã«å€æŽãå ããããããšããã®äžäœãã£ã¬ã¯ããªã«ç§»åããŸãã ãããŠãããŒãžããããã£ã¬ã¯ããªã¯ãã³ã³ãããå®éã«äœ¿çšããŠãããã¡ã€ã«ã·ã¹ãã ã®è¡šçŸã§ãã ããŠããã®ãã¹ãŠã®æ å ±ãèŠããå Žåãã³ã³ããã§ docker inspect ãå®è¡ããŸãã
ãã£ãããã£ãŠã¿ãŸãããã ããã§ã¯ãDockerDesktopã®GUIã䜿çšããŠããŸãã ããã§ã¯ããŒãžã§ã³ 4ã§èŠãããšãã§ããŸãã35ãä»ã¯ç«¯æ«ããããŸãã ã ããç§ã¯ãã®ã¿ãŒããã«ãéãã€ããã§ãã ãããŠãç§ãããããšããŠããããšã¯ããã®ç¹å®ã®ã³ã³ããã§docker inspectãè¡ãããšã§ãã ãããŠãã³ã³ããIDãã³ããŒããŠãããã«ããããããŸãã ããã§ãinspect ã¯ããã®ç¹å®ã®ã³ã³ããã«é¢ããããããçš®é¡ã®æ å ±ãæäŸããŸãã ãã®ãã¹ãŠã®æ å ±ãå¿ èŠãªããã§ã¯ãããŸããã ããã§æ¢ãéšåã¯ãã°ã©ããã©ã€ããŒãšåŒã°ãããã®ã§ãã ãããŠãç§ãã¡ã¯ãããããã§èŠãããšã«ãªããŸãã ã°ã©ã ãã©ã€ããŒã¯ãå®éã«ã¯åã¬ã€ã€ãŒã®äœçœ®ã瀺ããŠããŸãã ãããã£ãŠãããã§ã¯äžäœãã£ã¬ã¯ããªãšãããããã¹ãŠã®ç¹å®ã®ãã£ã¬ã¯ããªãããŒãžããããã£ã¬ã¯ããªãäžäœãã£ã¬ã¯ããªãäœæ¥ãã£ã¬ã¯ããªã確èªã§ããŸãã ããããã¹ãŠãããã«ã¬ã€ã¢ãŠããããŠããŸãã ããã¯ããããã®ç¹å®ã®ã¬ã€ã€ãŒã®ãããããå®éã«ãã¡ã€ã«ã·ã¹ãã ã®ã©ãã«ä¿åãããŠããããå®éã«ç€ºããŠããŸãã ããã¯ã³ã³ããæ å ±ã®äžéšã§ã
ã€ã¡ãŒãžãæåã§äœæãã (6:29)
æåã§ç»åãäœæã§ããããšããåç¥ã§ãã? docker run ãå®è¡ããŠãæ°ããã³ã³ãããéå§ã§ããŸããdocker exec ãš docker cp ãå®è¡ããŠãäžäœãã£ã¬ã¯ããªã§å®è¡äžã®ã³ã³ããã«ååºŠå€æŽãå ããããšãã§ããŸãããããŠã docker commit ãå®è¡ããŠããã®ãã¡ã€ã«ã·ã¹ãã ãã€ã¡ãŒãžãšããŠä¿åã§ããŸãã ããã§ãããã¯ç»åãäœæããæšå¥šãããæ¹æ³ã§ã¯ãªãããšãéåžžã«æç¢ºã«ããããšæããŸãã ããã¯ããã®ãããªããšããããã°ããŠããå Žåã« 1 åéãã§å®è¡ã§ãããã®ã§ãã ããããã»ãšãã©ã®å ŽåãDockerfileã䜿çšããããšãæã¿ãŸãã Dockerfile ã¯ãå®éã« Docker ã€ã¡ãŒãžãäœæããããã®å埩å¯èœãªæšæºåãããæ¹æ³ã§ãã Dockerfile ã«ã¯ããã®ç¹å®ã®ã€ã¡ãŒãžããã«ãããæ¹æ³ãå®éã«çè§£ããã®ã«åœ¹ç«ã€ããã€ãã®ã³ãã³ãããããŸãã ç§ãã¡ã¯ããã®äžã€äžã€ãèŠãŠãããŸãã
æåã®ãã®ã¯ FROM ã¹ããŒãã¡ã³ãã§ãã FROM ã¹ããŒãã¡ã³ãã¯ãéå§ããããŒã¹ãæäŸããŸãã åºæ¬ã€ã¡ãŒãžãšåŒã°ãããã®ã å³åŽã®äŸã§ã¯ãããŒã¹ãšããŠFROMUbuntuã䜿çšããŠããããšãããããŸãã æ¬¡ã«è¡ãããšã¯ãã€ã¡ãŒãžã« WORKDIR (äœæ¥ãã£ã¬ã¯ããª)ãèšå®ããããšã§ãã ã³ã³ãããšã³ã³ããã€ã¡ãŒãžã¯åé¢ããããã¡ã€ã«ã·ã¹ãã ã§ããããããã®äœæ¥ãã£ã¬ã¯ããªã¯ä»»æã®ãã®ã«ããããšãã§ããŸãã ãã®å Žå㯠/usr/local/app ã§ãã /app ã®å ŽåããããŸãã/opt ã®å ŽåããããŸããããããŸãåé¢ããããã¡ã€ã«ã·ã¹ãã ã§ããããããªããããã®ãªãäœã§ãããŸããŸããã æ¬¡ã¯ ãCOPY ã³ãã³ããš RUN ã³ãã³ãã§ãã ãããŠããããã¯ããã€ã§ãè¡ãããšãã§ããŸãã å¿ èŠãªäœæ¥ã«å¿ããŠãè€æ°ã®å®è¡ãŸãã¯è€æ°ã®ã³ããŒããŸãã¯ååŸã«å®è¡ã§ããŸãã ã³ããŒã¯æããã«ããã¹ãã»ãã¡ã€ã«ã»ã·ã¹ãã ãŸãã¯ãã®ä»ã®å Žæããã³ã³ããã»ã€ã¡ãŒãžã»ãã¡ã€ã«ã»ã·ã¹ãã ã«ã³ããŒããŠããŸãã å®è¡ã¯ãå®éã«ã¯ãã®ã€ã¡ãŒãž ãã¡ã€ã« ã·ã¹ãã å ã§ç©äºãå®è¡ããŠããŸãã ããã¯ãã³ãŒãã®ã³ã³ãã€ã«ãããŒã«ã®ã€ã³ã¹ããŒã«ãªã©ãäœã§ãããŸããŸããã æåŸã«ã CMD (ã³ãã³ã)ãèšå®ããŸãã ãã®ã³ãã³ãã¯ããã®ã€ã¡ãŒãžãã³ã³ãããšããŠèµ·åãããšãã«å®è¡ãããããã©ã«ãã®ã³ãã³ãã«ãªããŸãã ãããŠãããããã«ãããããã«ã docker build ã³ãã³ãã䜿çšããŸãã ããã¯ãã€ã¡ãŒãžãæ§ç¯ããããã®æšæºåãããæ¹æ³ã§ãã
ã¬ã€ã€ãŒã®å¯èŠå (8:44)
ããŠã次ã¯ããããã®ã¬ã€ã€ãŒãå®éã«èŠãã®ã¯ã©ãã§ãããã? ç»åãããå Žåããããã®ã¬ã€ã€ãŒã衚瀺ããŠè©³çްãååŸã§ããŸãã? ã¯ãããããè¡ãã«ã¯ããã€ãã®æ¹æ³ããããŸãã åã¬ã€ã€ãŒããšã«è©³çްãæäŸãã Dockerã€ã¡ãŒãžå±¥æŽ ããããŸãã å®éã«GUIã«ç§»åããŠæ å ±ã確èªã§ããŸãã ãŸãããã€ãããŒã«ã®ããã«ããã¡ã€ã«ã·ã¹ãã ãã¬ã€ã€ãŒããšã«å®éã«è¡šç€ºããä»ã®ãªãŒãã³ãœãŒã¹ããŒã«ããããŸãã ããã§ã¯ãç»åã®äŸãããã€ãèŠãŠã¿ãŸãããã Docker Desktopã«æ»ããšãã¿ãŒããã«ãã¯ãªã¢ããŸãã ç§ã®ç»åã«è¡ããŸãã ç§ã®ã¢ã³ãŽãæ¢ãã«è¡ãããŠãã ãããããã«ãããŸãã ãããŠãç§ã¯ãã dockerã€ã¡ãŒãžãã¹ããªãŒã¢ã³ãŽãè¡ããŸãã ãããŠããã®ç¹å®ã®ç»åã®ããŸããŸãªã¬ã€ã€ãŒã®ããããã衚瀺ãããŸãã ããã§ããåã¬ã€ã€ãŒãäœæããã³ãã³ãã衚瀺ãããŸãã å®éã«ãããèŠããšãåã¬ã€ã€ãŒã®ãµã€ãºã確èªã§ããŸãã ãããã®ããã€ãã¯äœããªãããšãããããŸããããã®ç¹å®ã®ã¬ã€ã€ãŒã§å®éã«äœãèµ·ãã£ãŠãããã«ãã£ãŠã¯ããããããå€§å¹ ã«å€ããã®ããããŸãã ãŸããGUIã§ããã«ã¢ã¯ã»ã¹ããããšãã§ããŸãã ãããã¯ãªãã¯ãããšãå®éã«äžã«å ¥ããšããã¹ãŠã®ã¬ã€ã€ãŒããã¹ãŠã®ç°ãªãã¬ã€ã€ãŒã衚瀺ãããŸã 26 ã ãããŠããã®ç¹å®ã®ããã±ãŒãžã®ãã¹ãŠã®è匱æ§ã確èªã§ããŸãã è匱æ§ãäœã§ãããããŸãåè匱æ§ãã©ã®ã¬ã€ã€ãŒã«ãããã確èªã§ããŸãã
ã€ã¡ãŒãžæ§ç¯ã®ãã¹ããã©ã¯ãã£ã¹ (10:21)
ããŠãç»åã®æ§é ãšãããäœã§ãããããããŠãªããããªã®ãã«ã€ããŠå°ãçè§£ãããšããã§ãç»åã®ãã¹ããã©ã¯ãã£ã¹ã«ã€ããŠè©±ãå§ããŸãããã æåã®1ã€ã¯ãããããããªãã®å€ãããã§ã«ãããæšæž¬ããŠãããããªãã®ç»åã«ç§å¯ãå«ããªãã§ãã ããã ãªããªããåŸã§ç»åããåé€ããŠããåžžã«ããã«ããããã§ãã ç»åã¬ã€ã€ãŒã¯ãç»åã«æžã蟌ããšããã«äžå€ã§ãããããæ°žé ã«ååšããŸãã æ±ºããŠã決ããŠãç§å¯ã«ã³ããŒããŠãåŸã§ãããã®çš®é¡ã®ãã®ãåé€ããããšã¯ãããŸããã ã·ãŒã¯ã¬ããã¯åžžã«å®è¡æã«ã³ã³ããã«æäŸããããã®ã§ãããã€ã¡ãŒãžèªäœã«ãã€ã¯ããããã®ã§ã¯ãããŸããã
次ã¯ããŒã¹ã€ã¡ãŒãžã䜿çšããããšã§ãã åºæ¬ã€ã¡ãŒãžã䜿çšããŠããå Žåã¯ããã®åºæ¬ã€ã¡ãŒãžãã©ãããæ¥ãã®ããä¿¡é Œããå¿ èŠããããŸãã ãã®ããŒã¹ã€ã¡ãŒãžã¯ããããã©ãããæ¥ãŠèª°ãäœæããããç¥ã£ãŠãããã®ã§ããããšã確èªããå¿ èŠããããŸãã ããã¯ãDockerã®ä¿¡é Œã§ããã³ã³ãã³ãã®ãããªãã®ã§ã - Dockerã®å ¬åŒã€ã¡ãŒãžãDockeræ€èšŒæžã¿ã®çºè¡è ã€ã¡ãŒãžããŸãã¯ç®¡çãããã€ã¡ãŒãžããã®ç¹å®ã®éšåã«åœ¹ç«ã¡ãŸãã ãŸãã¯ããããæäŸããä»ã®ãã³ããŒããããŸãã ãŸãã¯ãç¬èªã®ããŒã¹ã€ã¡ãŒãžãäœæããããšãã§ããŸãã ããããªãã·ã§ã³ã§ãã ããããã©ã®ãããªæ¹æ³ã§ãããã®ããŒã¹ã€ã¡ãŒãžãã©ãããæ¥ãŠããã®ããç¥ãå¿ èŠããããŸãã
æ¬¡ã¯ææ°ã®ã¿ã°ã§ãã latest ã¿ã°ãããã©ã«ãã®ã¿ã°ã§ãã ãããŠããåç¥ã®ããã«ãããã¯éåžžã«äœ¿ããããã§ãã ããŒãããããŸãã¯nginxããããã®ãããªããšãèšãããšãã§ããŸãã ãããŠãå€ãã®äººãããããŠããŸãã ãããŠãç§ãããªãã«äŒããããšããŠããããšã¯ãããªããææ°ã®ã¿ã°ã䜿çšããŠããå Žåããããããªãã®ãã«ããå£ãæ¥ãæ¥ããšããããšã§ãã ãã°ããã¯ããŸãããã§ãããã ãããŠãçªç¶ããŒãžã§ã³ãå€ãããŸãã ããªããäºæ³ããŠããªãã£ãäœããéãã§ãããã ãããŠçªç¶ã察åŠããªããã°ãªããªããšã©ãŒãçºçããŸãã ãããã£ãŠãææ°ã®ã¿ã°ã䜿çšãã代ããã«ãç¹å®ã®ããŒãžã§ã³ã«åºå®ããå¿ èŠããããŸãã ãã®ããã«ã¯ãããã¯å€åãããèªåãäœãæã£ãŠããã®ãããããŠããªããäœæ¥ããŠãããã®ãããªãããã®ç¹å®ã®ç»åã®ã©ã®ããŒãžã§ã³ã§äœæ¥ããŠããã®ããæ£ç¢ºã«ç¥ãããšãã§ããŸãã
æåŸã®1ã€ã¯ãããã©ã«ãã§ã¯ãç»åã«ã¯rootãŠãŒã¶ãŒãããããšã§ãã é root ãŠãŒã¶ãŒãèšå®ããå¿ èŠããããŸãã user ã³ãã³ãã䜿çšãããšããŠãŒã¶ãŒãæå®ã§ããŸãã ããã«ãããŠãŒã¶ãŒã®æç€ºã«èžã¿èŸŒãã éåžžã«çŽ æŽãããããã°ããããŸãã ãããèŠãŠã¿ãããšã匷ããå§ãããŸãã
ã€ã¡ãŒãžãŽãŒã« (12:40)
ããŠãããã§ã¯ãç»åãæ§ç¯ããéã®ããã€ãã®ç®æšã«ã€ããŠè©±ããŸãããã 1ã€ç®ã¯ãå¯èœãªéãç»åã®ãµã€ãºãçž®å°ããããšããããšã§ãã ç»åã«äœåãªãã®ãå ¥ããå¿ èŠã¯ãããŸããã æ¬¡ã«ãåå©çšãä¿é²ããããã«ã¬ã€ã€ãŒãæ§é åããããšèããŠããŸãã ã¬ã€ã€ãŒãç»åãããè¿ éã«äœæããäœæ¥ã容æã«ããã®ã«åœ¹ç«ã€ããã«ããããšèããŠããŸãã ãããŠãã¢ããªã±ãŒã·ã§ã³ã®å®è¡ã«å¿ èŠãªãã®ã ããå«ããŸãã ãã®ãããéçºã§éèŠã ã£ãç¡é¢ä¿ãªããŒã«ãæ¬çªç°å¢ã«å«ããããããŸããã
ãããã®ããšã®äžã€äžã€ãã©ã®ããã«è¡ãã®ã§ãããã? ãŸããåã¬ã€ã€ãŒã§äœãã³ããŒããŠããã®ãããããŠæ¬åœã«è¿œå ããã€ããã ã£ããã®ã ãã远å ããŠããããšã確èªããããã«ãã©ã®ããã«æ§æã§ããããèããŸãã ã§ã¯ãããã«ãããã®äŸãèŠãŠã¿ãŸãããã ç§ãã¡ãããããã®ã¯ãç§ãã¡ãé²ãã«ã€ããŠã¯ãªãŒã³ã¢ããããããšããããšã§ãã ããã«ã¯ãUbuntuã®å·ŠåŽã®äŸããããŸãã apt update ãå®è¡ããpython3-pip install flask ãã€ã³ã¹ããŒã«ããŠãããæåŸã® 2 ã€ã®ã³ãã³ãã®ãã¹ãŠã®ãã®ãåé€ããŸãã ããŠãããã¯ããªãè¯ãããã§ãã? ãåç¥ã®ããã«ãç§ãã¡ã¯èªåãã¡ã®ä»äºãããŠããŸãã ç§ãã¡ã¯ããã®ãããªããšãèªåãã¡ã§åŸçä»ãããããã«ããŠããŸãã
ããããããã§å°ãèããŠã¿ãŸãããã ãããã®ç·ã®ããããã¯ãæ°ããã¬ã€ã€ãŒãäœæããŸãã ãã®ãããåã¬ã€ã€ãŒã¯æžã蟌ãŸãããšããã«äžå€ã«ãªããŸãã ãããã£ãŠãå®éã«ã¯ãªãŒã³ã¢ãããã代ããã«ãæåŸã® 2 ã€ã®ã³ãã³ãã¯ããã®ç¹å®ã®ã€ã¡ãŒãžã§åé€ã§ããªãç¹å®ã®ãã¡ã€ã«ã®ãã¯ã€ãã¢ãŠã ãã¡ã€ã«ã远å ãããããå®éã«ã¯ãã®ãµã€ãºã«è¿œå ãããŠããŸãã ãããè¡ã代ããã«ãããããã¹ãŠã®ã³ãã³ãã 1 ã€ã®ã³ãã³ããš 1 ã€ã®ã¬ã€ã€ãŒãšããŠå®è¡ã§ããå Žåãããããã¹ãŠã®åºåãã¬ã€ã€ãŒãšããŠãã¡ã€ã« ã·ã¹ãã ã«æžã蟌ãŸãããã®ã«ãªãããšãæå³ããŸãã ãããã£ãŠãå³åŽã®äŸã«ç§»åãããšãããã«ã¯ 1 ã€ã® run ã³ãã³ãããããã¢ã³ããµã³ããšã¹ã©ãã·ã¥ã䜿çšããŠããããã¹ãŠã®ç°ãªãã³ãã³ãã 1 ã€ã«çµåããŠããããšãããããŸãã ãããæå³ããã®ã¯ãããããã¹ãŠãäžåºŠã«å®è¡ããããã¹ãŠãåæã«å®è¡ããããã®çµæããã¡ã€ã«ã·ã¹ãã ã«æžã蟌ãŸãããšããããšã§ãã ãããã£ãŠãå·ŠåŽã®ã³ãã³ãããäœæãããã€ã¡ãŒãžã¯ 460 MB ã«ãªããŸããå³åŽã®æ©èœçã«åãç»åã¯ããã 157 MB ã§ãã ãã® 1 ã€ã®ã³ãã³ãã倿Žããã ãã§ 66% ã®å€æŽã§ãã ã€ãŸããã¬ã€ã€ãŒã§äœãããŠããã®ããèããå®éã«ã€ã¡ãŒãžã®åã¬ã€ã€ãŒãã©ã®ããã«æžããŠããããå¹ççã«äœæããããã«ãã¯ãªãŒã³ã¢ãããè¡ãããšã§ãã
ãã«ããã£ãã·ã¥(15:50)
ããŠã次ã®ç®æšã¯ãåå©çšãä¿é²ããããã«ã¬ã€ã€ãŒãæ§é åããããšã§ãã ãã®ãããåãã«ãã®å€æŽã¬ã€ã€ãŒã®æ°ãæžãããã€ã¡ãŒãžãããã·ã¥ããã³ãã«ããããã®åž¯åå¹ ãæžãããŸãã ããŠããã®æç¹ã§ã¬ã€ã€ãŒã«ã€ããŠå°ã話ããŸãããããªããã®ã¬ã€ã€ãŒã®ããšãããŠããã®ãã¯æ¬åœã«èª¬æããŠããŸããã ãããŠããã®ã¬ã€ã€ãŒã®ããšããã£ãŠããçç±ã®1ã€ã¯ãããã§èª¬æããŠããããšã§ã:åã¬ã€ã€ãŒã¯äžå€ã§ãããã¬ã€ã€ãŒã¯åå©çšã§ãããããå®éã«ã€ã¡ãŒãžããã«ããŠããã·ã¥ããããã€ã¡ãŒãžããã«ãããããããšãã«ããã®ã¬ã€ã€ãŒãæ¯ååæ§ç¯ãã代ããã«ããã®ã¬ã€ã€ãŒã®ãã£ãã·ã¥ãããããŒãžã§ã³ã䜿çšã§ããããšãæå³ããŸãã ããã¯ãç»åãæ§ç¯ããã ãã§ãªããå¿ èŠãªã¬ã€ã€ãŒã«å¿ããŠç»åãããã·ã¥ããã³ãã«ããå Žåã«ã倧ããªã¡ãªããã§ãã ãã«ããã£ãã·ã¥ã¯ãå®éã«ã€ã¡ãŒãžããã«ããããšãã«éåžžã«éèŠã«ãªããŸãã ãã®ããããã«ããã£ãã·ã¥ã¯ãå¯èœãªéãã¬ã€ã€ãŒãåå©çšããããšããŸãã ãããã£ãŠããã£ãã·ã¥ ã«ãŒã«ã§ã¯ã远å åœä»€ãšã³ããŒåœä»€ããšã«ãã³ã³ãã³ããŸãã¯ã¡ã¿ããŒã¿ã®ãã§ãã¯ãµã ãäœæãããããã«èŠå®ãããŠããŸãã ãã§ãã¯ãµã ã倿Žããããšããã£ãã·ã¥ã¯ç¡å¹ã«ãªããŸãã ã€ãŸããããšãã°ããœãŒã¹ãã£ã¬ã¯ããªãã€ã¡ãŒãžã«ã³ããŒããŠããŠããã®ãœãŒã¹ãã£ã¬ã¯ããªå ã®äœãã倿Žãããšããã§ãã¯ãµã ã倿Žãããã³ããŒããå¿ èŠããããã®ã倿Žããããããã£ãã·ã¥ãç¡å¹ã«ãªããŸãã RUN ã³ãã³ãã倿Žããããšããã£ãã·ã¥ã¯ç¡å¹ã«ãªããŸãã ãããã£ãŠããã«ãäžã®ä»»æã®æç¹ã§ãã£ãã·ã¥ãç¡å¹ã«ãªããšããã®ãã«ãã®æ®ãã®éšåãã€ãŸããã®ç¹å®ã®ãã«ãã®æ®ãã®ãã¹ãŠã®ã¬ã€ã€ãŒã«å¯ŸããŠãã£ãã·ã¥ãç¡å¹ã«ãªããŸãã ãããæå³ããã®ã¯ãæ¬åœã«é«éãªãã«ããå¿ èŠãªå Žåããã®ãã£ãã·ã¥ã¯ãã«ãããã»ã¹äžã«ã§ããã ãé ããŸã§ç¡å¹ã«ããå¿ èŠããããšããããšã§ãã ããã§éèŠãªã®ã¯ãJavaãªã©ã®ç¹å®ã®æè¡ã»ããã«å¯ŸããŠãã£ãã·ã³ã°ãèšå®ããããšããããæ¹æ³ã§æ©èœãããããšãã£ãŠããã¹ãŠã®æè¡ã§åãããã«æ©èœããããã§ã¯ãªããšããããšã§ãã 確èªããå¿ èŠããããã£ãã·ã³ã°ã«ãŒã«ã¯ãç¹å®ã®ãã¯ãããžãŒã¹ã¿ãã¯ã«ãã£ãŠç°ãªããŸãã
ãã£ãã·ã¥ãå£ããå Žæãç¹å®ãã (17:47)
ããŠãæåã«èŠãã¹ãããšã¯ããã£ãã·ã¥ãã©ãã§å£ããã®ããæ¬åœã«çè§£ããããšããããšã§ãã? ãããè¡ã 1 ã€ã®æ¹æ³ã¯ããã«ããå®è¡ããŠåºåã確èªããããšã§ãã ãã®äŸã§ã¯ãå³åŽã®è¡ãèŠããšãäœæ¥ãã£ã¬ã¯ããªã®ãã£ãã·ã¥ããã 2 ã衚瀺ãããŸã 4 ã ããã¯ããã®ã¹ãããããã£ãã·ã¥ãããããšãæå³ããŸãã å®éã«ã¯å®è¡ãããŠããŸããã ããã¯åã«ãããŒã«ã«ãã¡ã€ã«ã·ã¹ãã äžã®ã¬ã€ã€ãŒããååŸãããŸããã 以äžã® copy ã¹ããŒãã¡ã³ããš run ã¹ããŒãã¡ã³ãã¯ããã®é£ã« cache ã¹ããŒãã¡ã³ãããªãããã«ãã£ãã·ã¥ãããŸããã§ããã ã¬ã€ã€ãŒãèŠãŠãã©ã®ã¬ã€ã€ãŒãå®éã«åå©çšãããã©ã®ã¬ã€ã€ãŒãåå©çšãããªãã£ãããçè§£ã§ããŸãã ãããã£ãŠãããã¯ãã£ãã·ã¥ãçºçããå¿ èŠãããå Žæãå®éã«çè§£ããç°¡åãªæ¹æ³ã§ãã ãããè¡ãå¥ã®æ¹æ³ã«ã€ããŠã¯ããã¬ãŒã³ããŒã·ã§ã³ã®å°ãåŸã§èª¬æããŸãã
ããŠãç»åãæ§ç¯ããéã«çè§£ãã¹ãéèŠãªããšã®1ã€ã¯ãå®éã«å®æçã«å€æŽããå¿ èŠããããã®ã«ã€ããŠã§ãã 確ãã«ãã¢ããªã±ãŒã·ã§ã³ã³ãŒãã¯å®æçã«å€æŽãããŸãã ããããã¢ããªã±ãŒã·ã§ã³ã®èšå®ã¯å®æçã«å€æŽããå¿ èŠããããŸãã? ãã¶ããããããªãã§ãã å®éã«ã¢ããªã±ãŒã·ã§ã³ãã»ããã¢ããããé©åã«æ§æãããšããã®ã³ãŒããé »ç¹ã«å€æŽããããšã¯ãããããªããªããŸãã ãããã£ãŠãããã®å·ŠåŽã®äŸãèŠããšãFROMããŒãããããçŸåšã®ãã£ã¬ã¯ããªãããã®ç¹å®ã®ã€ã¡ãŒãžã«ãã¹ãŠãã³ããŒããŠããŸãã npm installãå®è¡ããŠããŸãã ç§ãã¡ã¯æž¯ãå ¬éããŠããããšã³ããªãŒãã€ã³ããè¡ããšèšããŸããã ããŠããããèŠããšããœãŒã¹ã³ãŒãã®å€æŽãªã©ãã©ã®ãããªå€æŽãã2çªç®ã®ã¹ãããã§ãã£ãã·ã¥ãæ€èšŒããããšãæå³ããŸãã ã€ãŸããnpm installã¯åžžã«æ¯åå®è¡ããå¿ èŠããããŸãã äžæ¹ãå³åŽã§ã¯ãnpm installãå¿ èŠãšããããã€ãã®ãã¡ã€ã«ãååŸããããããæåã«ã³ããŒããŠããnpm installãå®è¡ããæ®ãã®ãœãŒã¹ãã€ã¡ãŒãžã«ã³ããŒããŸãã ããã§ããã£ãã·ã¥ãå£ããå Žæãäœããã€ã³ãã«ç§»åããã®ã§ãããã±ãŒãžJSONãšããã±ãŒãžããã¯JSONãšnpm installã®ã³ããŒããã£ãã·ã¥ã§ããç¹å®ã®ã€ã¡ãŒãžãæ§ç¯ãããã³ã«ãã«ããé«éåã§ããŸãã
ã§ã¯ãããã«äžæ©èžã¿èŸŒãã§ã¿ãŸãããã ç§ãã³ããŒããŠãããœãŒã¹ãçŽç²ã«ãœãŒã¹ã§ãããšããŸãããã HTMLãã¡ã€ã«ã§ãäœã§ãããŸããŸããã ãããŠããã®ç¹å®ã®ã¬ã€ã€ãŒã¯ä»ã®ã¬ã€ã€ãŒãšçžäºäœçšããããšã¯ãããŸããã åŸã§å¥ã®ã¹ããããªã©ã§ã³ã³ãã€ã«ããã€ããã¯ãããŸããã ããã¯åã«ããã«å ¥ã£ãŠãããã¡ã€ã«ã®ã»ããã§ãã âlinkã³ãã³ãã䜿çšããŠãåºæ¬çã«ãã®ã¬ã€ã€ãŒã¯ä»ã®ã¬ã€ã€ãŒããç¬ç«ããŠãããšèšãããšãã§ããŸãããã®ç¹å®ã®æé ãç°ãªãå Žåã§ãããã£ãã·ã¥ãç¡å¹ã«ããªãã§ãã ããã ããã«ãããå®éã«ãœãŒã¹ã³ãŒãã倿Žãããã®ãœãŒã¹ã³ãŒãã®å€æŽãåŸç¶ã®ãã«ãã«ã³ããŒã§ããããã«ãªããŸããããã£ãã·ã¥ãç¡å¹ã«ããããšã¯ã§ããŸããã ãã®ããããã£ãã·ã¥ã¯ããŒãã®å ¬éãšæåŸã®ã³ãã³ãã®ããã«æå®ã®äœçœ®ã«æ®ããŸãã ãããã£ãŠãããã¯æãããªçç±ã§COPYã³ãã³ããšADDã³ãã³ãã§ã®ã¿æ©èœããŸããããã«ãã®åŸã®ã¹ãããã«å«ãŸããªããã®ãã³ããŒããå Žåã¯ãâlinkã³ãã³ãã䜿çšããŠãã£ãã·ã¥ãç¶è¡ã§ããŸãã
ãããã®æåŸã® 1 ã€ã¯ãã¢ããªã±ãŒã·ã§ã³ã®å®è¡ã«å¿ èŠãªãã®ã ããå«ããããšã§ãã ã§ããããæ¬çªç°å¢ã§äœãã«ééããå Žåããã®æ¬çªç°å¢ã·ã¹ãã ã§æªçšãããå¯èœæ§ã®ããç¡é¢ä¿ãªãã®ãããããããããšã¯é¿ããããã®ã§ãã ç§ãã¡ã¯ããã®éçšã·ã¹ãã ãã§ããã ãã¯ãªãŒã³ã§ããåºãã«ããå®è¡ããå¿ èŠãããã¢ããªã±ãŒã·ã§ã³ãåçŽã«å®è¡ã§ããããã«ããããšèããŠããŸãã ã§ã¯ãéçºã«åœ¹ç«ã€ã€ã¡ãŒãžãæã¡ãªãããã©ã®ããã«ãããå®çŸããŠããã®ã§ãããã?
ãã«ãã¹ããŒãžãã«ã (21:41)
ããŠãç§ãã¡ã¯ãã«ãã¹ããŒãžãã«ãã®ãã®æŠå¿µãæã£ãŠããŸãã ãã«ãã¹ããŒãž ãã«ãã䜿çšãããšãDockerfile å ã«ãã ãã€ãã©ã€ã³ãäœæã§ããŸãã ãã®ããããã«ãæã€ã¡ãŒãžãšã©ã³ã¿ã€ã ã€ã¡ãŒãžãåé¢ããŠããã以äžã®ããšãè¡ãããšãã§ããŸãã COPY âfrom=<stage> ãå®è¡ããŠãåã®ã¹ããŒãžããã³ããŒã§ããŸããæåŸã®ã¹ããŒãžã¯ããã®ç¹å®ã®ãã«ãã®ããã©ã«ãã®ã¿ãŒã²ããã«ãªããŸããããªãŒããŒã©ã€ãããããšãã§ããŸããããã«ã€ããŠã¯ãããã§ã¯ããã«èª¬æããŸãã ãããã£ãŠãããã®äžéšã«ããäŸãèŠããšãã¹ããŒãž1ãšããŠFROM<image>ããããŸãã ãããŠãããããã®ã³ããŒãã©ã³ãè¡ããç©äºãã³ã³ãã€ã«ãããªã©ãããŸããŸãªããšãè¡ã£ãŠããŸãã ãã®åŸãFROM <image2>ããããããã¹ããŒãž 2 ãšããŠå¥ã®ããŒã¹ ã€ã¡ãŒãžãäœæãããŸãã æ¬¡ã«ãã¹ããŒãž1ããã以åã«è¡ã£ããã¹ãŠã®ã³ã³ãã€ã«ãšã³ããŒã®åºåããã©ã³ã¿ã€ã ç°å¢ãšãªãã¹ããŒãž2ã®ãã£ã¬ã¯ããªã«ã³ããŒããŸãã ãããã£ãŠãåºåãã³ããŒããŠããã ãã§ãæ¬çªç°å¢ã§å¿ èŠã®ãªãä»ã®ãã¹ãŠã®éšåãã³ããŒããŠããããã§ã¯ãããŸããã
ãããå®éã«ã©ã®ããã«èŠãããã確èªããããã® React ã®äŸã次ã«ç€ºããŸãã ãã®ç¹å®ã®ããšãèŠãŠãããŸãããã ããã§ãNodeã䜿çšããŠReactã³ãŒãããã«ãããããããã¹ãŠãéçWebãµãŒããŒã«ã³ããŒããŸãã FROM node:lts AS ãã«ãããããŸãããããç§ãã¡ã®ãã«ãã¹ããŒãžã§ãã äœæ¥ãã£ã¬ã¯ããªãèšå®ããŸãã ããã±ãŒãžJSONãšpackage-lock JSONãã³ããŒããŸãã NPMãã€ã³ã¹ããŒã«ããŸãã ãããªãã¯ãã£ã¬ã¯ããªããœãŒã¹ãã£ã¬ã¯ããªã«ã³ããŒããŸãã ç§ãã¡ã¯ãã«ããè¡ããŸãã ãããã®æé ããã¹ãŠå®è¡ããŠãå®éã«ã¢ããªã±ãŒã·ã§ã³ããã«ãããŸããã æ¬¡ã«ãFROM nginx:alpineãå®å šã«ç°ãªãããŒã¹ã€ã¡ãŒãžããããŸãã ãã¹ããããã®æ°ããã¹ããŒãžã«nginxæ§æãã³ããŒããŸãã æ¬¡ã«ããã«ãã¹ããŒãžã®åºåãnginx HTMLãã£ã¬ã¯ããªã«COPY âfrom=buildããŸãã ããã§ãå®éã«ãããã¯ã·ã§ã³ã€ã¡ãŒãžãå®è¡ããããã«å¿ èŠãªéšåã®ã¿ãæã€ãããã¯ã·ã§ã³ã€ã¡ãŒãžãã§ããŸããã
ãããŸã§ã¯2ã€ã®ã¹ããŒãžããããŸãããããªããã£ãšå€ãã®ã¹ããŒãžããªãã®ã§ãããã? è€æ°ã®ç°ãªãã¹ããŒãžãæã€ããšãã§ããŸãã ããã¯ãåãDockerfileå ã§éçºã€ã¡ãŒãžãšæ¬çªã€ã¡ãŒãžãå®éã«ãã«ãã§ããããšãæå³ããŸãã ãã®äŸãèŠãŠã¿ãŸãããã FROM node:lts AS baseããããããã§è¡ã£ãŠããã®ã¯äœæ¥ãã£ã¬ã¯ããªã®èšå®ã ãã§ãã æ¬¡ã«ãFROM base AS dev ããããã³ãã³ããèšå®ããŸãã ãã®æç¹ã§ãå³åŽã«ããããã«ãå®éã«devã®ã¿ãŒã²ããã§ãã«ããè¡ãããã¹ãäžã®ãã£ã¬ã¯ããªã®ãã¡ã€ã«ãã€ã³ãããŠã³ããè¡ããããŒããèšå®ããéçºã€ã¡ãŒãžãæã€ããšãã§ããŸãã éçºè ãšããŠäœæ¥ããæºåãã§ããŠããã€ã¡ãŒãžããããããã䜿çšããŠãã¹ãã·ã¹ãã ã«å€æŽãå ããå®è¡äžã®ã³ã³ããã«åæ ãããã®ãèŠãããšãã§ããã®ã¯çŽ æŽãããããšã§ãã æ¬¡ã«ãFROM base AS ãã«ããäœæããåã«å®è¡ãããã¹ãŠã®ã³ãã³ããå®è¡ããŸãã ãããŠæåŸã«ãFROM nginx:alpineã䜿çšãã補åçããããŸãã ããã«ãããéçºã€ã¡ãŒãžãšéçšã€ã¡ãŒãžãåãDockerfileå ã«æã€ããšãã§ããããã«ãªããäž¡æ¹ã®ããŒãžã§ã³ã®ã€ã¡ãŒãžã§äœãèµ·ãã£ãŠããããæ£ç¢ºã«ç¢ºèªã§ããããã«ãªããŸãã
ææ°ã®ãã«ããšDockerfileã®æ©èœ(24:59)
次ã«ãææ°ã®ãã«ãæ©èœãš Dockerfile æ©èœã«ã€ããŠèª¬æããŸãã ã€ãŸããããã§ã®æåã®ãã®ã¯ããŠã³ãã§ãã ããã§ãç»åã«ã·ãŒã¯ã¬ãããå«ããªãããšã«ã€ããŠå ã»ã©ã話ãããŸããã ããã¯éåžžã«æªãèãã§ãã 代ããã«äœããã¹ãã§ãã? ãã«ãã«SSHããŒãªã©ã®ã·ãŒã¯ã¬ãããå¿ èŠãªå ŽåããŸãã¯åã«å¥ã®ãã¡ã€ã«ã·ã¹ãã ããã®ãã«ãã«ãã€ã³ãããå¿ èŠãããå Žåã¯ã©ãã§ããããã ããã§ç»å Žããã®ãããŠã³ãã§ãã ããŠã³ãã䜿çšãããšããã«ãäžã«ãã¡ã€ã«ã·ã¹ãã ã倿Žã§ããŸãã ãã ãããã¡ã€ã«ã·ã¹ãã ã«äœãã远å ããããã§ã¯ãããŸããã ãã«ãããã»ã¹äžã«äžæçã«ã¢ã¿ããããã ãã§ãã ãã®ããããã¹ããã£ã¬ã¯ããªãäœæãããã«ãã«ããŠã³ãããããšãã§ããŸããã ãã§ã«ã©ããå¥ã®å Žæã«ãã£ãã·ã¥ãæ§ç¯ããããã䜿çšãããã®ã§ããã°ããã£ãã·ã¥ãã£ã¬ã¯ããªãæã€ããšãã§ããŸãã ç§ãã¡ã«ã¯ç§å¯ããããããããŸããã SSHããŒãæã€ããšãã§ããŸãã ããããããšã°ããã§ãã
ã ãããããã®äŸãèŠãŠãããŒãããã ããã±ãŒãžãšç³žãã³ããŒããŸãã yarn install ãå®è¡ããŸãã ããããnpmã®è³æ Œæ å ±ã®ç§å¯ãããŠã³ãããŸãã ãããŠããã®ãã«ããŒã䜿çšãããã£ãã·ã¥ã«ãããŠã³ãããŸãã ãããã¯äžæçã«ããŠã³ããããŸããããã®ç¹å®ã®ã€ã¡ãŒãžã®äžéšã«ã¯ãªããŸããã
次㯠HEREDOC ã®ãµããŒãã§ãã å ã»ã©ã®äŸã§ãã¢ã³ããµã³ããšã¹ã©ãã·ã¥ã䜿çšããŠã³ãã³ããçµã¿åãããŸããã HEREDOCã䜿çšãããšãã¢ã³ããµã³ããã¹ã©ãã·ã¥ããã¹ãŠè¡ãããšãªããå®éã«è€æ°ã®è¡ããŸãšããããšãã§ããŸãã å·ŠåŽã®äŸãèŠããšãRUNãšEOT bashããããŸãã ãããŠããŸãšããã³ãã³ãããããããããŸãã ãããŠããããã¯ãã¹ãŠ 1 è¡ãšããŠå®è¡ãããŸãã å³åŽã«ã¯ãã€ã³ã¿ãŒããªã¿ãŒãæå®ããŠãã©ã€ã³ã®å°å·ãªã©ããã®äžã§ããŸããŸãªããšãè¡ãããšãã§ããŸãã ãã®ãããHEREDOC ã®ãµããŒãã¯æè»æ§ãé«ããDockerfile ã®ã¯ãªãŒã³ã¢ããã«ã圹ç«ã¡ãŸãã
ãã«ãã¢ãŒããã¯ã㣠(26:57)
ããã«ã€ããŠã¯æåã«ã話ãããŸããã ããã«ã€ããŠä»è©±ããŸãããã ã€ã¡ãŒãžããã«ãããå Žåããã®ã€ã¡ãŒãžã¯ãçŸåšå®è¡ããŠããã¢ãŒããã¯ãã£ã«åãããŠãã«ããããããšãæå³ããŸãã Mac M2 ãã·ã³ãããè¶ãã§ãã ã€ã¡ãŒãžããã€ãã£ãã«ãã«ããããšããã®ã€ã¡ãŒãžã®ARM 64 ã€ã¡ãŒãžããã«ããããŸãã ããšãã°ããã®ã€ã¡ãŒãžã AMD 64 ã§å®è¡ããå¿ èŠãããå Žåããã®ã¢ãŒããã¯ãã£ã®ã€ã¡ãŒãžããã«ãããŠå®è¡ã§ããããã«ããå¿ èŠããããŸãã ãã«ãã¢ãŒããã¯ãã£ãã«ãã¯ããã®æ©èœãæäŸããŸãã ããã§ã®äŸãèŠããšãããã«ã¯ããã€ãã®ã¹ããŒãã¡ã³ãããããŸãã ãã«ããšã㊠FROM âplatform=$BUILDPLATFORM ããŒãããããŸãã ããã§ã®BUILDPLATFORMã¯ãæ§ç¯ããããã€ãã£ããã©ãããã©ãŒã ã«ãªããŸãã ç§ã®å ŽåããããARM 64 ã§ãããããã«ã¯ãå®éã«ããããã¹ãŠã®ç°ãªããã®ãäžç·ã«æ§ç¯ããŠããããŸããŸãªã¹ããŒãã¡ã³ããèŠãããŸãã æ¬¡ã«ãFROM âplatform=$TARGETPLATFORM nginx ããããŸãã ã§ã¯ããã®ã¿ãŒã²ãããã©ãããã©ãŒã ã¯ã©ãããæ¥ãŠããã®ã§ãããã? äžéšãèŠããšãå®éã«ã¯ãã«ãã³ãã³ããå®è¡ããŠããã³ãã³ãã©ã€ã³ã§æå®ããŠããããšãããããŸãã âplatform=linux/amd64,linux/arm64ãšè¡šç€ºãããŸãã ããã¯ãå³åŽã«èŠãããããã«ããã®æçµã¹ããŒãžã®2ã€ã®ç°ãªãããŒãžã§ã³ãäœæããããšãæå³ããŸãã ãã«ãã¯ãç§ãã¡ãæ§ç¯ããŠãããã€ãã£ã ã¢ãŒããã¯ãã£ã«åºã¥ããŠããŸããããã¡ã€ãã«ã«ã¯ããã®ç¹å®ã®ã€ã¡ãŒãžã®AMD 64 ããŒãžã§ã³ãšARM 64 ããŒãžã§ã³ã®äž¡æ¹ãå«ãŸããŸãã ããããå®éã«ãã«ãã¢ãŒããã¯ãã£ãã«ããè¡ãæ¹æ³ã§ãã ããŠãéèŠãªã®ã¯ãç§ããã€ãã£ãã¢ãŒããã¯ãã£ã§ã¯ãªãã¢ãŒããã¯ãã£ã®ããã«æ§ç¯ããŠããå Žåããããå®çŸããããã«ã¯ãšãã¥ã¬ãŒãããå¿ èŠããããšããããšã§ãã ã€ãŸãããã«ãã«æéããããããã«ãã®åŠçæéãé·ããªããŸãã ãããããããåé¿ããæ¹æ³ã¯ãããŸãã Docker Build Cloudã®ãããªãã®ã䜿çšãããšãARMãšAMDã®äž¡æ¹ã® 64 ãã«ããã¯ã©ãŠãç°å¢ã§ãã€ãã£ãã«å®è¡ã§ããŸãã ããã«ã€ããŠã¯ãåŸã§ããå°ã詳ãã説æããŸãã
ãã«ã ãã§ãã¯ã¯ãçŸæç¹ã§ãã«ããŒã«æèŒãããŠããæ°æ©èœã® 1 ã€ã§ãã ãã«ããã§ãã¯ãè¡ã£ãŠããããšã¯ãåºæ¬çã«ãDockerfileã§èµ·ãã£ãŠããå¯èœæ§ã®ããããšã«é¢ããæ å ±ãæäŸããããšã§ãã æ£ããå®è¡ãããŠããããã«èŠããDockerfileãããå Žåã§ãããã®äžã«æ£ãããªããã®ããããæ³šæããå¿ èŠããããããããŸããã ããã«ããããã¹ããã©ã¯ãã£ã¹ãšãã§ãã¯ãããã³Dockerfileã§äœãããŠããã®ããç¥ãããšãã§ããŸãã ãã®å éšã§ãããã®åé¡ã解決ããæ¹æ³ã«é¢ããèŠåãšã¬ã€ãã³ã¹ã®ãªã¹ãã衚瀺ãããŸãã ããã¯ããã«ããè¡ã£ãŠãããšãããŸãã¯ãã¹ã¯ãããã®ãã«ããã¥ãŒã§ç¢ºèªã§ããŸãããããã«ã€ããŠã¯1ç§ã§ããã«æ»ããŸãã
Docker Desktop GUI ãã«ããã¥ãŒ (29:44)
ãã®ãããæè¿ãDocker Desktop GUIå ã«ãã«ããã¥ãŒã远å ããŸããã ãã®ãã«ã ãã¥ãŒã§ã¯ãå®è¡ããŠãããã«ãã«é¢ããå€ãã®æ å ±ãæäŸãããŸãã ãã«ãæéããã£ãã·ã¥ã®äœ¿çšç¶æ³ãäŸåé¢ä¿ããã«ã ãœãŒã¹ãDockerfileããã«ã ãã°ãããã³ã€ã¡ãŒãžããšã®å±¥æŽã«é¢ããæ å ±ãæäŸããŸãã ãããèŠãŠããããã©ã®ãããªãã®ãèŠãŠã¿ãŸãããã ãããç§ã®Dockerãã¹ã¯ãããGUIã§ãã ãã«ãã«ç§»åãããšãããŸããŸãªã€ã¡ãŒãžãã¹ãŠã®ãã«ãã衚瀺ãããŸãã ãã£ãã·ã¥ããã¹ãŠã®åŠçãè¡ããå®éã«ç»åãåçæããã ãã§æžãããããããã®ããã€ãã¯éåžžã«æéãããããªãã£ãããšãããããŸãã ãããã®ããã€ãã¯é·ãæéã§ããããããã«é¢ããæ å ±ãåŸãããšãã§ããŸãã äŸãã°ãããã¹ããªã³ã°ãããã¯ãªããã¯ã«æ¥ããšããã«ããã§ãã¯ã§ã¯ããã«ããã€ãã®èŠåããããšå®éã«ç¢ºèªã§ããŸãã ã ãããç§ã¯ãããã®ç¹å®ã®èŠåããã§ãã¯ãã«è¡ãããšãã§ããŸãã ããã«ããããã«ãæéã«é¢ããæ å ±ãåŸãããŸãã ã§ããããå®éã«äœãã®ã«ã©ããããã®æéãããã£ãããããããŸãã ãã®ç¹å®ã®æéå ã«ãã£ãã·ã¥ãå®éã«ã©ãã ã䜿çšããããã確èªã§ããããã§ãäŸåé¢ä¿ã確èªã§ããŸãã ãããã£ãŠããã®ç¹å®ã®äŸåé¢ä¿å ã«ããå®éã«ã¯è€æ°ã®ç°ãªãäŸåé¢ä¿ãããããšãããããŸãã ãœãŒã¹ã«æ¥ããšããã®Dockerfileã®å®éã®ãœãŒã¹ãã¡ã€ã«ãååŸããŸãã ãããŠãããã§FROMãšASãç°ãªãããšã«ã€ããŠã®èŠåã®ããã€ããèŠãããšãã§ããŸãã ç¹°ãè¿ãã«ãªããŸããããããã¯å¿ ããããšã©ãŒãåŒãèµ·ãããã®ã§ã¯ãããŸããããDockerfileãå®è¡ãããšãã«æ³šæãããããšã§ãã ç¹å®ã®Dockerfileã«é¢ãããã¹ãŠã®æ å ±ã確èªã§ããŸãã æ¬¡ã«ããã°ã«ç§»åãããšããã®åã¹ãããã®åã ã®ãã°ã ãã§ãªããäžéšã§æ°ä»ããå Žåããããã¹ã¯ããŒã«ããŠãããšãã¯ããããåŠçããŠãããšãã«ãå°ããªç·ãç§»åãããã«ããã©ã®ããã«é²è¡ããŠãããã瀺ããŠããŸãã ãããçµéšããŠãããšããç§ã¯å®éã«ãã«ãããã»ã¹ã®ã©ãã«ããããèŠãããšãã§ããŸãã ããã¯ãç¹ã«é·ãJavaãã«ãã§ãã ãã®äžã§èŠãã®ã¯å°ãé£ããã§ããããããã®ç¹å®ã®ãã«ããç§»åããŠãããšãã«ãå®éã«ã¯ãã®å°ããªç·ãåãããŠããŸãã ãã®åŸãæŽå²ãæ¯ãè¿ããšãç§ãæ§ç¯ããŠããç¹å®ã®ã€ã¡ãŒãžã«ã€ããŠãæ§ç¯ã«ã©ããããã®æéãããã£ãããå®éã«ããããŸãã ã©ã®ãããã®æéãçµã¡ãŸããã? ãããã®ããããã«ããã€ã®ãã«ãã¹ãããããããŸããã? ãŸãããããã®ã¹ãããã®ãã¡ããã£ãã·ã¥ãããã¹ãããã¯ããã€ãããŸãã? ã ããããã®ç¹å®ã®ã€ã¡ãŒãžãå®éã«æ§ç¯ããŠãããã¡ã«ãæéãçµã€ã«ã€ããŠè¯ããªã£ãŠããã®ããæªããªã£ãŠããã®ããèŠããŠããŸãã ãããŠããããã®ä»¥åã®ãã«ãã«ã€ããŠãããå€ãã®æ å ±ãååŸãããããäœã§ãããã確èªã§ããŸãã ããã§ããããã®ãã«ããŒã®ããã€ãã¯ããã©ã«ãã®ãã¹ã¯ããããã«ããŒã«ãããªãããšã«æ³šæããŠãã ããã ããã«ã¯ã¯ã©ãŠããã«ããŒããããŸãã
ããã¯ãDocker Build Cloud ã®æ©èœã§ãã ãããŠãããã§ç§ã®ããŒã«ã«ãã«ããã»ãŒ3åã2å 45 ç§ãã3åã ã£ãããšã«æ°ã¥ããŸããã ãããŠãããã 1ãããŸãã:ã¯ã©ãŠããã«ããŒã®23 ã ã¯ã©ãŠããã«ããŒã¯ããã«ããé«éåãããã€ãã£ãç°å¢ã§çŽæ¥ARMããã³AMDã®ãã«ããå®è¡ã§ããããã«ãªãããããšãã¥ã¬ãŒã·ã§ã³ã«ã€ããŠå¿é ããå¿ èŠããªã 64 ã¡ãªããã§ãã
ãã® Docker Image Deep Dive and Build Best Practices ãã¬ãŒã³ããŒã·ã§ã³ããæ¥œãã¿ããã ããã§ããããã ããã«è©³ããæ å ±ãå¿ èŠãªå Žåã¯ããã«ãã«é¢ããæ å ±ããããããããŸãã ãããã¯ç§ãã¡ã®ãã«ãããã¥ã¢ã«ãšç§ãã¡ã®ããã¥ã¡ã³ãã«ãããŸãã ãã²è¶³ãéãã§ã¿ãŠãã ããã ã©ããããããšãããããŸãã
Â
ããã«è©³ãã
- 詳现ã«ã€ããŠã¯ã Docker ãã«ã ããã¥ã¢ã« ãåç §ããŠãã ããã
- ããã«ãŒã¯åããŠã§ãã? å§ããŸãããã
- 泚ç®ã®ã¬ã€ãã§Docker補åãæ·±ãæãäžããŸãã
- Docker Newsletter ã賌èªããŠãã ããã
- Docker ãã¹ã¯ãããã®ææ°ãªãªãŒã¹ãå ¥æããŸãã
- 質åããããŸãã? Docker ã³ãã¥ããã£ããæäŒãããŸãã