ãã®èšäºã¯ãDocker Captain ã® Vladimir Mikhalev æ°ã®å¯çš¿ã«ãããã®ã§ãã
Dockerãã¡ã³ã®çãããæ°å¹ŽãããŸããŠããã§ãšãããããŸãã 2024幎ãçŽ æŽãããã¹ã¿ãŒããåãããšãé¡ã£ãŠããŸãã Dockerã®ãšãã¹ããŒãã§ããããšãDockerã³ãã¥ããã£ã«äžæ £ãã§ããããšãDockerãæé©åããããããè¿ éã«éå§ãããããããã®æè¯ã®æ¹æ³ã«ã€ããŠçåã«æããããããŸããã Dockerã®ãã£ããã³ããã³ã·ãã¢DevOpsãšã³ãžãã¢ãšããŠãç§ã¯Dockerã6幎以äžäœ¿çšããŠããã2024幎ã®ã¹ãªãªã³ã°ãªã¢ããããŒããæ¥œãã¿ã«ããŠããŸãã Â
ãã®æçš¿ã§ã¯ãå®éã®çµéšãšã€ã³ãµã€ããŒã®ç¥èãéããŠåéããDockerã®8ã€ã®ãã³ããšã³ããå ±æã§ããããšãå¬ããæããŸãã

Dockerã§çç£æ§ãé£èºçã«åäž
1ã VirtioFSãæå¹ã«ããŠãMacã§ã®ãã¡ã€ã«å ±æãé«éåããŸã
Macã®Dockerã§ã®ãã¡ã€ã«å ±æãäœèª¿ã ã£ãæ¥ã ãèŠããŠããŸãã?éããã¡ã€ã« I/O æäœãšæ Œéããåæãé·åŒããã³ã«æèšãèŠãŠããŸããã ããã¯åãªãå¿èåã®è©Šç·Žã§ã¯ãããŸããã§ãããããã¯ãã¯ãŒã¯ãããŒã®çã®ããã«ããã¯ã§ããã
ããããããã§æå ±ããããŸã: Docker Desktop for Mac 4.6 ã§ã¯ãããã¯æŽå²ã§ãã [èšå®] > [äžè¬] ã«ç§»åãã[VirtioFS] ãéžæããŸãã

ããã©ãŒãã³ã¹ã®é£èºã¯ãå®éã«äœéšããŠã¿ãªããšããããªããã®ã§ãã ã³ã³ããåãããã¢ããªã®æ§ç¯ãå®è¡ãæŽæ°ã®ãããã«ãããŠãããã¹ãŠãããã¹ããŒãã£ãŒã«æããããŸãã äžç§äžç§ãéèŠãªããŒã¹ã®éãéçºç°å¢ã«ããç§ãã¡ã«ãšã£ãŠãæ°é®®ãªç©ºæ°ãå¹ã蟌ããã®ã§ãã
ãã®ã¢ããã°ã¬ãŒãã¯çç£æ§ã®é¢ã§å€§ããªåå©ã§ããã2024 幎㮠Docker ã®æ¹åæ§ã«æåŸ ããŠããå€ãã®çç±ã® 1 ã€ã«ãããŸããã ãã®ãããªæ¹åã«ãããDockerã¯åãªãããŒã«ã§ã¯ãªããéçºã®åŒ·åãªå³æ¹ãšãªã£ãŠããŸãã
2ã Docker Buildãã£ãã·ã¥ãæé©åããããã®æŠç¥çã¬ã€ã€ãŒå
Dockerfileã®å¹çæ§ã«ã€ããŠã話ãããŸããã - ããã¯ãç§ãæ°ãåããªãã»ã©äœåºŠãåãçµãã§ããããšã§ãã æã¯ãDockerã®ãã«ãã¯ã¹ããŒãã³ã¹ã®ããã«æããããŸããã ã³ãŒãã«å°ããªå€æŽãå ãããã«ããå®äºãããŸã§æ°žé ã®ããã«æããããæéãåŸ ã¡ãŸãã ããã¯ãç¹ã«è¿ éã«ã€ãã¬ãŒã·ã§ã³ãè¡ã£ãŠããŠãå°ããªå€æŽããã¹ãããå¿ èŠãããå Žåã«ãé »ç¹ã«ãã©ã¹ãã¬ãŒã·ã§ã³ãæºãŸãããšã§ããã åé¡ãã åœç€Ÿã®Dockerfileã¯å¹ççãªãã£ãã·ã¥ã®ããã«æé©åãããŠããªãã£ããããäžå¿ èŠãªåæ§ç¯ãæéã®æµªè²»ã«ã€ãªãã£ãŠããŸããã
ç§ãåŠãã ç§èš£ã¯ãDockerfileã«æŠç¥çãªéå±€åãå ããããšã§ãæµããå€ããããšãã§ãããšããããšã§ãã äŸåé¢ä¿ã®ã€ã³ã¹ããŒã«ãªã©ãé »ç¹ã«å€æŽãããªãæé ãäžçªäžã«é 眮ããŸãã æ¬¡ã«ãã¢ããªã±ãŒã·ã§ã³ã³ãŒãã®COPYã³ãã³ããŸãã¯ADDã³ãã³ããäžã«é 眮ããŸããÂ
ãã®æ§é ã¯ã²ãŒã ãã§ã³ãžã£ãŒã§ãã ã€ãŸããDocker 㯠Dockerfile ã®äžäœéšåã«ãã£ãã·ã¥ãããã¬ã€ã€ãŒãåå©çšã§ããå®éã«å€æŽããããã®ã ããåæ§ç¯ã§ããŸãã ãã®çµæã¯? ãã«ãæéãççž®ãããã³ãŒãã£ã³ã°ã«ããå€ãã®æéãè²»ãããåŸ ã¡æéãæžããããšãã§ããŸãã
å¥ã®ã©ã€ãã»ãŒããŒã¯ãããã±ãŒãžãã€ã³ã¹ããŒã«ãããšãã«äœ¿çš RUN --mount type=cache ããŠããŸãã ãã®å°ã㪠gem ã¯ããã«ãéã§ããã±ãŒãžãã£ãã·ã¥ããã®ãŸãŸä¿æããŸãã ã€ã¡ãŒãžãæ§ç¯ãããã³ã«ã€ã³ã¿ãŒãããå
šäœãåããŠã³ããŒãããå¿
èŠã¯ãããããŸããã ããã¯ã倧ããªäŸåé¢ä¿ã§äœæ¥ããŠããå Žåã«ç¹ã«äŸ¿å©ã§ãã ãããå®è£
ããŠããã«ãå¹çãåäžããã®ãèŠãŠãã ããã
ããè¯ãã¢ã€ãã¢ãæäŸããããã«ãNode.js ã¢ããªã±ãŒã·ã§ã³ã® Dockerfile ã§ãããã®ååãé©çšããæ¹æ³ã次ã«ç€ºããŸãã
# Use an official Node base image
FROM node:14
# Install dependencies first to leverage Docker cache
COPY package.json package-lock.json ./
# Using cache mount for npm install, so unchanged packages arenât downloaded every time
RUN --mount=type=cache,target=/root/.npm \
npm install
# Copy the rest of your app's source code
COPY . .
# Your app's start command
CMD ["npm", "start"]
ãã® Dockerfile ã®äŸã§ã¯ãæŠç¥çãªã¬ã€ã€ãŒåãš RUN ãã£ãã·ã¥ã®äœ¿ç𿹿³ãå®éã«ç€ºãããããã®ãã©ã¯ãã£ã¹ã«ãã£ãŠ Docker ãã«ãã倧å¹
ã«æé©åããæ¹æ³ã瀺ããŸãã
ãããã®ãã©ã¯ãã£ã¹ãæ¡çšããããšã§ãç§ã®Dockerãšã¯ã¹ããªãšã³ã¹ã¯å€ãããŸããã Dockerãäžçãåæ§ç¯ããéãã¹ãããŒãèŠãå¿ èŠã¯ãããããŸããã ããããè¿ éãªã€ãã¬ãŒã·ã§ã³ãè¿ éãªãã£ãŒãããã¯ãçç£æ§ã®åäžã§ãã æ£çŽãªãšããããããããç§ãã¡ã®ä»äºã®å¹çæ§ã§ãã
3ã ãã«ããå¹ççã«ä¿ã€ããã«è¥å€§åãé¿ããŸãÂ
7 æ 2024 æ¥æŽæ°: Docker Build 㯠Docker Desktop 4ã§ããŒã«ã¢ãŠãããã GA ã確èªããŸãã33ã Docker Buildãã§ãã¯ã¯ãéçºè ãæé©åãããDockerfileãäœæããã®ãã¬ã€ãããå¹çãåäžããããã«ãæéãççž®ããŸããÂ
Dockerã®åæã®é ã¯ããã«ãã®ãµã€ãºãããŸãã«ã倧ããããããã°ãã°ã€ãŸãããŠããŸããã 鱿«ã®æ è¡ã®ããã«å®¶å šäœãè·é ããããããªãã®ã§ããã 倧éã®äžèŠãªãã¡ã€ã«ãDockerããŒã¢ã³ã«éä¿¡ããããšã«ãªãããã«ãã³ã³ããã¹ããè¥å€§åãããã«ãæéãçã ããã»ã©é ããªããŸãã ç©äºãç¡é§ãªãä¿æã«ä¿ãšããšããŠããå Žåã«ã¯ãããŸãçæ³çã§ã¯ãããŸããã
ãã®ã«ã®ããã«ãã³ã³ããã¹ãã«äœãå«ãããã«ã€ããŠãããã¹ããŒãã«ãªããŸãã ã§ .dockerignoreã å¿
èŠãªãã®ã ããæå®ããæçµçãªç»åã«å¯äžããªããã®ã¯ãã¹ãŠé€å€ããŸãã ãã®ã¢ãããŒãã¯ãæŽçæŽé ãããã¹ãŒãã±ãŒã¹ã«è·ç©ãè©°ããŠãå¿
èŠãªãã®ã ããæã£ãŠãããããªãã®ã§ãã å©ç¹ã¯ 2 ã€ãããŸã: ãã«ã ããã»ã¹ãé«éåããDocker ããŒã¢ã³ã«éä¿¡ããããŒã¿ãæžããããšã§ãªãœãŒã¹æ¶è²»ãåæžã§ããŸãã ããã¯ãæ°ãåããªãã»ã©ã®æéãç¯çŽãããåçŽã§ãããªãã匷åãªèª¿æŽã§ãã
ããã²ãšã€ã®ã²ãŒã ãã§ã³ãžã£ãŒã¯ãDockerfileã«ãã«ãã¹ããŒãžãã«ããæ¡çšããããšã§ãã è€éãªã¢ããªãæ§ç¯ããæçµçãªã€ã¡ãŒãžã«ãã¹ãŠã®ãã«ã ããŒã«ãšäŸåé¢ä¿ãå«ããå¿ èŠãããããšãæ³åããŠã¿ãŠãã ããã å®¶ã建ãŠãåŸã建èšäœæ¥å¡ãé£ããŠè¡ããããªãã®ã§ãã 代ããã«ããã«ãã¹ããŒãž ãã«ãã§ã¯ãåææ®µéã§ãã¹ãŠãã³ã³ãã€ã«ããŠãã«ãããå¥ã®ã¹ããŒãžã§å¿ èŠãªææç©ã ããã³ããŒããŸãã ããã«ãããããç¡é§ã®ãªããããå¹ççãªæçµç»åãåŸãããŸãã ããã¯ãã€ã¡ãŒãžã®ãµã€ãºãå°ããæããããã®åªãããã©ã¯ãã£ã¹ã§ããã ãã§ãªãããããã€ã®è¿ éåãšã¹ãã¬ãŒãžã³ã¹ãã®åæžã«ãã€ãªãããŸãã
ãããã®ã¡ãœãããå®è£ ããããšã§ãDocker ãã«ãã®åŠçæ¹æ³ãå€ãããŸããã ãã«ããé«éåããããããã€ãã¹ã ãŒãºã«ãªããã¯ãŒã¯ãããŒå šäœãããåçåãããããã«æããããŸãã
4ã Docker Initã§ãããžã§ã¯ããéå§
æ°ããDockerãããžã§ã¯ããéå§ããã®ãè¿·è·¯ãé²ãããã«æããããæãèŠããŠããŸãã? åæèšå®ãææ¢ãã§è¡ããDockerfileãäœæããã«äœãå«ãã .dockerignoreããèããããšããããããŸããã ã»ããã¢ãããcompose.yamlãªã©ãªã©ãÂ
Dockerã®åå¿è ã«ãšã£ãŠãããã¯æ°ãé ããªããããªããšã§ããã ããã©ã³ã®ããã«ãšã£ãŠãã貎éãªæéãé£ãã€ã¶ãå埩çãªéçšã§ããã æ°ãããããžã§ã¯ãã¯ãè»èŒªã®åçºæã®ããã§ãããççŽã«èšã£ãŠãå®éã®ã³ãŒãã£ã³ã°ãªã©ããã£ãšéèŠãªããšã«éäžããå¿ èŠããããŸããã
ãDocker Initããšå ¥åããŸãããã®æ©èœã¯ããããžã§ã¯ãã®ã»ããã¢ãããåçåããããã®åœã®æ©äººã§ãã ããã¯ãæ°ããDockerãããžã§ã¯ãã®åºç€ãåŠçããããŒãœãã«ã¢ã·ã¹ã¿ã³ãããããããªãã®ã§ããÂ
ãå®è¡ãã docker initã ãã§ããããžã§ã¯ãã«äžå¯æ¬ ãªè¶³å Žãèšå®ãããŸãã äžèŠãªãã¡ã€ã«ãæé€ããããã®ãã®.dockerignoreããããžã§ã¯ãã®ããŒãºã«åãããŠèª¿æŽããã Dockerfileããã«ãã³ã³ããèšå®ã管çããããã®ãã®ãããã«ã¯README.Docker.mdããã¥ã¡ã³ãçšã®ãã®compose.yamlãå
¥æã§ããŸããÂ
äžçªãããšããã¯? ã«ã¹ã¿ãã€ãºå¯èœã§ãã ããšãã°ãNode.js ã¢ããªã§äœæ¥ããŠããå ŽåãDocker Init ã¯æ±çšã® Dockerfile ãæäŸããã ãã§ã¯ãããŸãããNode ã®ç°å¢ãšäŸåé¢ä¿ã«åãããŠèª¿æŽãããŸãã ã€ãŸãã調æŽãå°ãªããªããããå€ãã®äœæ¥ãè¡ãããããã«ãªããŸãã æéãç¯çŽããã ãã§ã¯ãããŸãããããã¯æ£ããè¶³ã§å§ããããšã§ãããåœãŠæšéãå®åçãªã³ãŒãã¯ããå¿ èŠãããŸããã æåããæåãžã®æºåãæŽã£ãŠããŸãã
Docker Init ã¯ç§ãã¡ã®ç¶æ³ãå€ããŸããã 以åã¯ãã¹ãŠã®ãããžã§ã¯ãã«ãšã£ãŠéå±ãªã¹ã¿ãŒãã§ããããä»ã§ã¯ã¹ã ãŒãºã§åçåãããããã»ã¹ã«ãªã£ãŠããŸãã ããã¯ãDockerãããžã§ã¯ãã®ããŒã³ãããããæã£ãŠãããããªãã®ã§ãæåã®æéããããã«éçºã®äžå¿ã«çŽæ¥é£ããŠè¡ãæºåãã§ããŠããŸãã
5ã Docker Scoutã§ãœãããŠã§ã¢ã®è匱æ§ãããã¢ã¯ãã£ãã«èŠã€ããŠä¿®æ£
å ç¢ã§å®å šãªã¢ããªã±ãŒã·ã§ã³ãåžžã«è¿œæ±ããäžã§ãDevOpsã®äžçã§ããããåé¡ã«ãã°ãã°ééããŸããã ããã¯ã12 åã®ç§»åããã¿ãŒã²ãããåæã«è¿œè·¡ããããšãããããªãã®ã§ãã Docker Scout ãç»å Žããåã¯ãããã¯é¢åãªäœæ¥ã§ãããã»ãã¥ãªãã£ã®ã£ããã«å¯ŸåŠããããã«èŠèœãšããåå£å Žã§ã®ã¹ã¯ã©ã³ãã«ã«ã€ãªããããšããããããŸããã
ããããDocker Scout ãåªããŠããã®ã¯ãè匱æ§ãæ€åºãã匷åãªæ©èœã ãã§ã¯ãããŸããã Docker Scoutã¯ããªããžããªã®ã©ã³ãã¹ã±ãŒãå šäœãå æ¬çã«ç£èŠããŸãã Docker Scout ãã¯ãŒã¯ãããŒã®äžå¯æ¬ ãªéšåã«ããŠãããããŒã ãã¹ããŒãžå šäœã§ãå®å šãªæçµè£œåãæäŸããŠãããšããèªä¿¡ãé«ãŸããŸããã
ãŸãããã¹ãŠã®ãªããžããªã« Docker Scout ãã»ããã¢ããããŸããã ( Docker ã¯ã€ãã¯ã¹ã¿ãŒã ã¬ã€ããåç §ããŠãã ããã ããã¯ããããããç¹å®ã®é åãç£èŠããä»»åãè² ã£ãæ©åšã®ãããã¯ãŒã¯ãå±éãããããªãã®ã§ãã ã»ããã¢ããããã»ã¹ã¯ç°¡åã§ãå°å ¥åŸãScoutã¯ãªããžããªã®ã»ãã¥ãªãã£ã¹ããŒã¿ã¹ãç¶ç¶çã«å¯èŠåãå§ããŸããã
Docker Scout ã§ç¹ã«é«ãè©äŸ¡ããŠããã®ã¯ãç¶ç¶çãªå¯èŠæ§æ©èœã§ãã ããã¯ãææ°ã®ã»ãã¥ãªãã£æ å ±ã§åžžã«æŽæ°ãããããã·ã¥ããŒããæã£ãŠãããããªãã®ã§ãã è匱æ§ã®ç¹å®ã ãã®è©±ã§ã¯ãããŸãããç§ãã¡ã¯ããªã¢ã«ã¿ã€ã ã®æŽå¯ãæäŸããæ å ±ãæäŸããè¡åããæºåãæŽããããŒã«ã«ã€ããŠè©±ããŠããã®ã§ãã
ãŸããDocker Scout ãåé¡ã«ãã©ã°ãç«ãŠãŠããåé¡ã«æ©ãŸãããã ãã§ã¯ãããŸããã ããã¯ã修埩ããã»ã¹ãã¬ã€ãããŸãã ãã®ç¹ã¯ã²ãŒã ãã§ã³ãžã£ãŒã§ããã ããã¯ãå°éå®¶ããã°ã«ããŠãããã±ãŒãžã®æŽæ°ãèšå®ã®åæ§æãªã©ãæåã®è¡åæ¹éãææ¡ãããããªãã®ã§ãã ãã®ã¬ãã«ã®ã¬ã€ãã³ã¹ãæã€ããšã§ãã»ãã¥ãªãã£ãžã®ã¢ãããŒããäºåŸå¯Ÿå¿åããäºå察å¿åãžãšå€åããåãæ¹§ããŠããŸãã
Docker Scoutããã®ããã«æ¡åŒµçã«çµ±åããããšã§ããœãããŠã§ã¢ãµãã©ã€ãã§ãŒã³ãä¿è·ããããã®ã¢ãããŒãã«é©åœããããããŸããã ããã¯ããã§ã㯠ããã¯ã¹ ã¢ã¯ãã£ããã£ã§ã¯ãªããªããŸãããããã¯ãåœç€Ÿã®DevOpsæåã®äžå¯æ¬ ãªéšåã§ãã ã¢ããªã±ãŒã·ã§ã³ã©ã³ãã¹ã±ãŒãå šäœã«ãããå æ¬çãªã»ãã¥ãªãã£ããããããããšãç¥ãããšã§åŸãããå®å¿æã¯? ãã©ã€ã¹ã¬ã¹ã
ãã®ããã«Docker Scoutãçµã¿èŸŒãããšã§ãã»ãã¥ãªãã£äœå¶ã匷åãããã¢ãããŒããæ ¹æ¬çã«å€åããå®å šãªãœãããŠã§ã¢ãµãã©ã€ãã§ãŒã³ãéçºã©ã€ããµã€ã¯ã«ã®ã·ãŒã ã¬ã¹ã«çµ±åãããåŽé¢ã«ãªããŸããã
Docker Scout ãèªåã§è©ŠããŠã¿ãŠãã ãã ã
6ã Docker Build Cloud ã§éçºãå é
Dockerãããžã§ã¯ãã«åãçµãã§ããŠãåãã«ããæžæ»ã®äžã§ã®é·ãããŒãããªããã®ããã«æãããšããŸãã åŸæ¥ã®ããŒã«ã«Dockerãã«ãã¯ãç¹ã«å€§èŠæš¡ãªãããžã§ã¯ãã®å Žåãã€ã©ã€ã©ããã»ã©é ãããªãœãŒã¹ã倧éã«æ¶è²»ããå¯èœæ§ããããŸãã ããªãã¯ããã«ããŠãããã°ã¬ã¹ããŒãéãåãã®ãèŠãªããããã·ã³ãè² è·ã®äžã§ããã声ãäžããŠããŸãã è¶³ã«éããçžãä»ããŠã¬ãŒã¹ãèµ°ãããšãããããªãã®ã§ãã ãŸãããã€ãšã³ããã·ã³ã䜿çšããéçºè ã¯ãã«ããé£ãªãããªãäžæ¹ã§ãã»ããã¢ãããæ§ãããªéçºè ã¯é ãããŒã¹ã«èããŠãããªã©ãäžåçãªç«¶äºã®å Žãå¿ããŠã¯ãªããŸããã ãã®æ Œå·®ã¯ããã°ãã°æªåé«ããç§ã®ãã·ã³ã§åäœãããçå矀ã«ã€ãªãããéçºããã»ã¹ã«äºè£ãçã¿åºããŸãã
Docker Build Cloud ã¯ãéãããã¯ããã¯ããžã§ããããã¯ã«äº€æãããããªã²ãŒã ãã§ã³ãžã£ãŒã§ããDocker Build Cloudã¯ããã«ãããã»ã¹ãã¯ã©ãŠãã«ãªãããŒãããããšã§ãããŒã«ã«ããŒããŠã§ã¢ã«é¢ä¿ãªãããã¹ãŠã®éçºè ã«äžè²«æ§ã®ããé«éãã«ãç°å¢ãæäŸããŸãã ããã¯ãããŒã ã®ãã¹ãŠã®éçºè ã«ãDocker ã€ã¡ãŒãžãæ§ç¯ããããã®æé«çŽã®ã¯ãŒã¯ã¹ããŒã·ã§ã³ãæäŸããã®ãšåãã§ãã
Dockerfileãã¯ã©ãŠãããŒã¹ã®ãã«ãçšã«æé©åããããšã¯ãDocker Build Cloudã®å¯èœæ§ãæå€§éã«åŒãåºãããã®éµã§ãã ã¬ã€ã€ãŒ ãã£ãã·ã¥ã®å¹çãæå€§åããããã« Dockerfile ã³ãã³ããæ§é åãããã«ã ã³ã³ããã¹ã ãµã€ãºãæå°éã«æããããšã¯ãéèŠãªæé ã§ãã ããã¯ãå ±æãã£ãã·ã¥ãšäžŠåãã«ãæ©èœã掻çšããããã« Dockerfile åœä»€ãæŽçããããšã§ãããéçºããã»ã¹ãåçåããŠå¹çãæå€§åããã®ã«äŒŒãŠããŸãã Dockerfile æ§é ãåç·šæããããšã§ãéèŠãªãããžã§ã¯ãã®ãã«ãæéãååã«ççž®ãããé¢åãªããã»ã¹ãè¿ éãã€å¹ççãªããã»ã¹ã«å€æãããããšãæãåºããŸãã
ãã«ãæéãšãã£ãã·ã¥ã®äœ¿çšç¶æ³ãç£èŠããããšãåæ§ã«éèŠã§ãã ãããã®åŽé¢ãæ³šææ·±ãç£èŠããããšã§ãéå¹çæ§ãããã«ããã¯ãç¹å®ããã¿ã€ã ãªãŒãªèª¿æŽã調æŽãå¯èœã«ãªããŸãã ãã©ãã£ãã¯ã®å€ãææã«ããã«ãæéãæ¥å¢ããŠããããšã«æ°ä»ããŸããã ãã£ãã·ã¥ã®äœ¿çšç¶æ³ãšãã«ã ãã¿ãŒã³ãåæããããšã§ãDockerfile ã®èšå®ãã¹ã®ããã¹ããããç¹å®ãã解決ãããšããã«ãæéãæé©ãªã¬ãã«ã«æ»ããŸããã
Docker Build Cloud ãæ¡çšããããšã§ãéçºã¯ãŒã¯ãããŒã«å€§ããªå€åãããããããŸãã ãã«ããé«éåããã ãã§ã¯ãããŸãããããã¯ã調åã®ãšããå¹ççãªéçºç°å¢ãäœãããšã§ãã ãã«ãã¹ããŒãž ãã«ããå®è£ ããåºæ¬ã€ã¡ãŒãžã宿çã«æŽæ°ããããšã§ãããã»ã¹ãããã«åçåããããã«ããé«éã§ããã ãã§ãªããå®å šã§ææ°ã®ç¶æ ã«ãªããŸãã
ããŒã ã¯è¿ éãªã€ãã¬ãŒã·ã§ã³ãšå¹ççãªãªãœãŒã¹å©çšã享åããçç£æ§ãæ°ããªé«ã¿ãžãšåŒãäžããããšãã§ããŸãã Docker Build Cloudã¯ãæ§ç¯ããã»ã¹ãéçšããã¹ããŒããšå¹çæ§ãç¹åŸŽãšãããšã¯ã¹ããªãšã³ã¹ã«å€ãããããžã§ã¯ããåã«æ§ç¯ãããã ãã§ãªããæå 端ã®ã¯ã©ãŠãç°å¢ã§è¿ éãã€ã·ãŒã ã¬ã¹ã«äœæãããããšãä¿èšŒããŸãã ãã®Docker Build Cloudãžã®ç§»è¡ã¯ãåãªãã¢ããã°ã¬ãŒãã§ã¯ãããŸãããããã¯ãDockerãã«ãã«é¢ããæ°ããèãæ¹ã§ãããææ°ã®ãœãããŠã§ã¢éçºã«å¿ èŠãªä¿ææ§ãšãã€ãããºã ãšå®å šã«äžèŽããŠããŸãã
7ã Docker Debug ã§ã³ãŒãã®åé¡ãããè¿ éã«è§£æ±º
7æ2024æ¥æŽæ°:Docker Debug ã® GA ãªãªãŒã¹ã¯ãDocker Desktop 4.33.
ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã¯ãããŒã¹ãæ¬ ããŠããããºã«ãè§£ãããã«æããããšããããŸãã ãã°ãçºçãããã°ãæ§æãæ·±ãæãäžããŠãåé¡ãåçŸããããšããŠããå¯èœæ§ããããŸãã æ¢åµã®ä»äºãšå°ã䌌ãŠããŠããã¹ãŠã®æããããéèŠã§ãããæ¬¡ã®æããããã©ãã«ããã®ãããããããŸããã ãã®ããã»ã¹ã¯æéãããããççŽã«èšã£ãŠãç¹ã«åé¡ããšããã©ããã®ãªããã®ã§ãã£ãããç°å¢åºæã®ãã®ã§ãã£ããããå Žåã¯ãå°ãé çã®çš®ã«ãªãå¯èœæ§ããããŸãã
ããããããã§ Docker Debug ãä»å ¥ããã²ãŒã ãå€ããŸãã è€éãªå®æ¢ãã®çã£åªäžã«ãããšãã«è«çŒé¡ãšè©³çްãªå°å³ãææž¡ããããããªãã®ã§ãã Docker Debugã¯ãDocker Buildã®ã¢ããã°ã¬ãŒãã§ãããäžé£ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ããŒã«ãããã«å©çšã§ããŸãã ããã¯ããããã° ããã»ã¹ã詊è¡é¯èª€ã®æ ã§ã¯ãªãããœãªã¥ãŒã·ã§ã³ãžã®ãŸã£ãããªéçã«ããããã«èšèšãããŠããŸãã
Docker Debug ãéåžžã®ãããã° ããã»ã¹ã«çµ±åããããšã¯ãããŒã«ãããã«æ°ãããã€ã㯠ããŒã« ã»ããã远å ãããããªãã®ã§ãã ããŒã«ã«ãããã°ãšãªã¢ãŒããããã°ã®äž¡æ¹ã®æ©èœãå©çšã§ãããããç¹å®ãå°é£ãªåé¡ã«å¯ŸåŠããå Žåã«éåžžã«åœ¹ç«ã¡ãŸãã ããšãã°ããã°ããªã¢ã«ã¿ã€ã ã§è¡šç€ºããããã³ã³ããå ã§ã³ãã³ããå®è¡ãããããæ©èœã¯ãDockerç°å¢å ã§äœãèµ·ãã£ãŠãããã«çŽæ¥é£çµ¡ãããããªãã®ã§ãã ãã®çŽæ¥ã¢ã¯ã»ã¹ã«ãããç¥èã«åºã¥ããæšæž¬ãè¡ãã®ã§ã¯ãªããäœãã©ãã§åé¡ã«ãªã£ãŠããããæ£ç¢ºã«ææ¡ã§ããŸãã
Docker Debug ã䜿çšãããšãããŒã«ã«èšå®ãšéçšç°å¢ã®äž¡æ¹ã®èšå®ãæš¡å£ããç°å¢ã§åé¡ãåçŸããŠèšºæã§ããŸãã æ¬çªç°å¢ã§çºçãããã°ãããŒã«ã«ç°å¢ã§åžžã«çºçãããšã¯éããããã®éãåæ§ã§ããããããã®æ±çšæ§ã¯éåžžã«éèŠã§ãã ããã¯ãã¬ãŒã¹ãã©ãã¯ãšåžè¡å°ã®äž¡æ¹ã§è»ããã¹ãããèœåãæã£ãŠããããšã«äŒŒãŠãããããŸããŸãªæ¡ä»¶ã§ã®ããã©ãŒãã³ã¹ã®å šäœåãææ¡ã§ããŸãã
ããšãã°ãã¢ããªã±ãŒã·ã§ã³ã«æ§é åãã°ãå®è£ ãããšããã°ãäžè²«ããã¹ããŒãªãŒã«ãªããDocker Debugãåé¡ã®æ žå¿ã«ç°¡åã«å°éã§ããããã«ãªããŸãã Docker Debugã®ããŒã«ã䜿çšããŠã³ã³ããã®ãã«ã¹ãã§ãã¯ã宿çã«å®è¡ããããšã¯ã宿çãªãã§ãã¯ãè¡ãããšã«äŒŒãŠããããã¹ãŠãã¹ã ãŒãºã«å®è¡ãããããã«ããŠããŸãã
ãããã¯ãŒã¯ã®åé¡ãã¡ã¢ãªãªãŒã¯ã«çŽé¢ããå ŽåãDockerDebugãé Œãã«ãªãããŒã«ã«ãªããŸãã ããã«ãããæ£ç¢ºãªç°å¢ãè€è£œããã³ã³ãããæ·±ãæãäžããŠãããã»ã¹ããããã¯ãŒã¯æ¥ç¶ãæ€æ»ããããã¢ããªã±ãŒã·ã§ã³ããã»ã¹ã§ãããã¬ãå®è¡ãããããããšãã§ããŸãã ããã¯ãããŸããŸãªæ¡ä»¶äžã§ã®ã¢ããªã±ãŒã·ã§ã³ã®åäœãåæããŠçè§£ããããã®æè¡ããŒã«ãæã£ãŠãããããªãã®ã§ãã
Docker Debugã®èªç¶ãªçŸããã¯ãè€éãªåé¡ãããè¿ éã«è§£æ±ºã§ããããšã§ãã 衚é¢çãªçç¶ã ããèŠãŠããããã§ã¯ãããŸãããæ·±ãæãäžããŠæ ¹æ¬åå ãçè§£ããããšãã§ããŸãã ããã¯åºæ¬çã«ãDockerãããžã§ã¯ãã®Xç·ããžã§ã³ãæäŸããŸãã é·æéã®ããŠã³ã¿ã€ã ãé·æéã®ãã°ãã³ãã¯ããå¿ èŠãããŸãããDocker Debug ã䜿çšãããšãæ£ç¢ºãã€è¿ éã«åé¡ãç¹å®ãçè§£ã解決ã§ããŸãã
èŠããã«ãDocker Debugãã¯ãŒã¯ãããŒã«çµã¿èŸŒãããšã¯ãåãªãã¢ããã°ã¬ãŒãã§ã¯ãããŸãããããã¯ãããå¹ççã§å¹æçããã€ã¹ãã¬ã¹ã®å°ãªããã©ãã«ã·ã¥ãŒãã£ã³ã°ã«åããå€é©çãªã¹ãããã§ãã ããã¯ã以åã¯æ°ãé ããªããããªäœæ¥ã ã£ããã®ããéçºããã»ã¹ã®äžéšã«ããŠããã管çããããããããããããã®ã«ããããšã§ãã Docker Debug ã䜿çšãããšãåé¡ãããè¿ éã«ä¿®æ£ã§ããã ãã§ãªãããããã®åé¡ã®çºçãæªç¶ã«é²ãããã®åææ å ±ãåŸãããŸãã ããã¯ãDockerã²ãŒã ãåäžããããããžã§ã¯ãã®æ©èœæ§ãå ç¢æ§ãå埩åã確ä¿ããæŠç¥çãªåãã§ãã
8ã Testcontainers ã䜿çšããå®éã®ã€ã³ã¹ã¿ã³ã¹ã«å¯Ÿãããã¹ã
Dockerã®äžçã§ã®ãã¹ãã¯ãã³ã³ãã¹ã ãã§é¬±èŒãšããæ£®ã®äžãé²ããããªæèŠã«ãªãããšããããããŸãã çŸå®äžçã®ç¶æ³ãã·ãã¥ã¬ãŒãããããã«æåãå°œãããŠããŸãããäœããè¶³ããªããšããæèŠãåžžã«ãããŸãã ãã¬ãããã«ã§ãã©ãœã³ã®æºåããããããªãã®ã§ã䟿å©ã§ãããèè£ éè·¯ãèµ°ãã®ãšã¯ãŸã£ããåãã§ã¯ãããŸããã
Testcontainersã¯ãç¹ã«DockerãAtomicJarãè²·åããããšã§ãç§ãã¡ã®ãã¹ãã¢ãããŒããèŠããåœã®æ©äººã§ããå®éã®ããŒã¿ããŒã¹ãã¡ãã»ãŒãž ãããŒã«ãŒããŸãã¯ã¢ããªã察話ãããã®ä»ã®ãµãŒãã¹ããã¹ãŠãã¹ã ã¹ã€ãŒãå ã§èµ·åã§ããæ©èœãããããšãæ³åããŠã¿ãŠãã ããã ã¬ã¬ãŒãžã§ç·Žç¿ãã代ããã«ãçªç¶æ¬æ ŒçãªãªããŒãµã«ã¹ã¿ãžãªã«ã¢ã¯ã»ã¹ã§ãããããªãã®ã§ãã
ãã¹ãã³ã³ããã䜿çšãããšãæ¬çªç°å¢ã®ãããªç°å¢ãèªåãã¹ãã«çŽæ¥åã蟌ãããšãã§ããŸãã ããŒã¿ããŒã¹ãã¹ãçšã®PostgreSQLã³ã³ãããã¡ãã»ãŒãžã³ã°çšã®RabbitMQã®ã¹ãã³ã¢ããã«ã€ããŠè©±ããŠããŸãã ãã®å€åã¯èšå¿µç¢çã§ãããç§ãã¡ã¯çŸåšãæ¬çªç°å¢ã§ééãããã®ãå³å¯ã«åæ ããæ¡ä»¶äžã§ãã¹ããè¡ã£ãŠããŸãã
Testcontainers ã CI/CD ãã€ãã©ã€ã³ã«ã·ãŒã ã¬ã¹ã«çµ±åããŸããã ã€ãŸãããã¹ãŠã®ãã«ããå®éã®ã€ã³ã¹ã¿ã³ã¹ã«å¯ŸããŠãã¹ããããéçºè ã®ãã·ã³ã§åæ Œãããã¹ããæ¬çªç°å¢ã§ãåæ Œããããšãä¿èšŒãããŸãã ããã¯ãå¿ èŠãªãšãã«ãã€ã§ãå šå€©ååã®ãã¹ããã©ãã¯ãå©çšã§ãããããªãã®ã§ãã
ç§ãã¡ãçŽé¢ããå®éã®ã·ããªãªã§çµµãæãããŠãã ããã éçºäžã¯ãã¹ãŠãæ£åžžã«æ©èœããŠããã®ã«ãæ¬çªç°å¢ã§ã¯ãã©ãã©ã«ãªããšããæç¶çãªåé¡ããããŸããã èãèŠãããããŸããã? æ¬çªç°å¢ãšåãããŒãžã§ã³ã®ããŒã¿ããŒã¹ã§ãã¹ãã³ã³ãããã»ããã¢ãããããšãããçªç¶ãåé¡ãåçŸå¯èœã«ãªããŸããã ãããŠèšºæå¯èœã ãããŠä¿®æ£å¯èœã ããã¯ãå€éã®ãããã°ã»ãã·ã§ã³ãè¿ éãªä¿®æ£ã«å€ããã¿ãŒãã³ã°ãã€ã³ãã®ãããªãã®ã§ããã
Testcontainersã®æ¡çšã¯ãåã«æ°ããããŒã«ãæ¡çšããã ãã§ã¯ãããŸãããããã¯ããã¹ãã®æ¹æ³ã«ããããã©ãã€ã ã·ããã§ãã ããã«ããããã¹ããåã«åæ Œããã ãã§ãªããå®éã®äžçã§ã©ã®ããã«åäœãããã«ã€ããŠèªä¿¡ãæãŠãæ¹æ³ã§åæ Œããããšãä¿èšŒãããŸãã
ãšãããšãDocker ãã¡ã³ã®çããããŸã Testcontainers ã®äžçã«é£ã³èŸŒãã§ã¿ãŸãããã ãã¹ãã®ä¿¡é Œæ§ãé«ããã ãã§ã¯ãããŸãããããã¯ãéçºã©ã€ããµã€ã¯ã«å šäœãããäºæž¬å¯èœã§å¹ççã§ãæ¬çªç°å¢ã®çŸå®ã«åãããããšã§ãã ããã¯ã䜿ãå§ãããšããããªãã§ã©ããã£ãŠç®¡çããã®ãçåã«æãããŒã«ã®1ã€ã§ãã
Testcontainers ã®äœ¿çšãéå§ããŠããæèŠããèãããã ããã
çµè«
ãããã¯ãç§ã®ããŒã ãšç§ãDockerã䜿çšããæ¹æ³ã«é©åœãããããããããã®ãã³ããšã³ãã§ãã Dockerã䜿ãå§ããã°ããã®æ¹ããDockerã®ã²ãŒã ã«ãã°ããæºãã£ãŠããæ¹ãããããã®ã€ã³ãµã€ãããç§ãã¡ãå©ããŠãããã®ãšåãããã«ãçããã®ã圹ã«ç«ãŠã°å¹žãã§ããÂ
æ°æ©èœã«ã€ããŠãã¡æ©ãèããDocker ãšã¯ã¹ããªãšã³ã¹ã®åäžã«åœ¹ç«ãŠãããšèããŠããéçºè ã®æ¹ã¯ã Developer Preview Program ã«ãµã€ã³ã¢ããããŠãã ããã ãŸãã ã³ãã¥ããã£ã®Slackã«åå ããŠãä»ã®Dockeréçºè ãšãã£ããããããç¬èªã®ãã³ããã³ããå ±æãããããããšãã§ããŸãã
2024幎ã幞ããªå¹Žã«ãªããŸãããã«! å®éšãç¶ããŠãDockerizingãæ¥œããã§ãã ãã!
ããã«è©³ãã
- Docker ã¯ã€ãã¯ã¹ã¿ãŒã ã¬ã€ããã芧ãã ããã
- ãDocker Init: Initialize Dockerfile and Compose files with the single CLI commandãããèªã¿ãã ããã
- ããã«ãŒã¹ã«ãŠããã詊ããã ããã
- Docker Build Cloud ã®è©³çްã«ã€ããŠã¯ããã¡ããã芧ãã ããã
- Testcontainers ã®äœ¿çšãéå§ããŸãã
- éçºè ãã¬ãã¥ãŒ ããã°ã©ã ã«ãµã€ã³ã¢ããããŸãã
- Slack ã® Docker ã³ãã¥ããã£ã«åå ããŸãããã