ã2026幎çãDockerã®å§ãæ¹ â ã€ã³ã¹ããŒã«ããæåã®ã³ã³ãããŸã§å®å šã¬ã€ã
- Docker Desktopã®ã€ã³ã¹ããŒã«ãšç¢ºèª
- ã€ã¡ãŒãžãšã³ã³ããã®éããçè§£ãã
- åºæ¬ã³ãã³ãïŒrun/ps/stop/rm/imagesïŒ
- Dockerfileã®åºæ¬çãªæžãæ¹
Dockerã³ãã³ãæ©èŠè¡š
# ã€ã³ã¹ããŒã«ç¢ºèª
docker version
docker info
# ã³ã³ããã®èµ·å
docker run hello-world # åäœç¢ºèª
docker run -d -p 8080:80 nginx # ããã¯ã°ã©ãŠã³ãã§nginxèµ·å
docker run -it ubuntu bash # ã€ã³ã¿ã©ã¯ãã£ããªã·ã§ã«
# ã³ã³ãã管ç
docker ps # èµ·åäžã®ã³ã³ããäžèЧ
docker ps -a # å
šã³ã³ããäžèЧïŒåæ¢æžã¿ãå«ãïŒ
docker stop ã³ã³ããID # 忢
docker rm ã³ã³ããID # åé€
docker logs ã³ã³ããID # ãã°ç¢ºèª
# ã€ã¡ãŒãžç®¡ç
docker images # ã€ã¡ãŒãžäžèЧ
docker pull ubuntu:22.04 # ã€ã¡ãŒãžãããŠã³ããŒã
docker rmi ã€ã¡ãŒãžID # ã€ã¡ãŒãžåé€
docker build -t myapp:v1 . # Dockerfileãããã«ã
Dockerfile ã®åºæ¬
# ããŒã¹ã€ã¡ãŒãž
FROM node:20-alpine
# äœæ¥ãã£ã¬ã¯ããª
WORKDIR /app
# äŸåãã¡ã€ã«ãã³ããŒããŠã€ã³ã¹ããŒã«
COPY package*.json ./
RUN npm ci
# ãœãŒã¹ãã³ããŒ
COPY . .
# ããŒããå
Ž
EXPOSE 3000
# èµ·åã³ãã³ã
CMD ["node", "server.js"]
ããããè©°ãŸããã€ã³ã
Q: docker: permission denied ãåºãïŒLinuxïŒ
â sudo usermod -aG docker $USER ãå®è¡ããŠãã°ã¢ãŠãâãã°ã€ã³ãçŽããšãsudo ãªãã§Dockerã䜿ããŸãã
Q: ã³ã³ãããæ¢ããŠãããŒã¿ãæ¶ãã
â ã³ã³ããã¯ã¹ããŒãã¬ã¹ã§ããããŒã¿ãæ°žç¶åããã«ã¯ -v /ãã¹ãåŽãã¹:/ã³ã³ããåŽãã¹ ã§ããªã¥ãŒã ãããŠã³ãããããdocker volume create ã䜿ããŸãã
Q: ããŒããéè€ããŠãšã©ãŒã«ãªã
â -p 8080:80 ã®å·ŠåŽïŒãã¹ãåŽïŒãå¥ã®ããã»ã¹ã«äœ¿ãããŠããŸããdocker ps ã§äœ¿çšäžã®ããŒãã確èªããå¥ã®ããŒãçªå·ïŒäŸïŒ8081:80ïŒã«å€ããŠãã ããã
Dockerã£ãŠããèããã©ãçµå±ãªã«ãã§ãããã®ãªã®ïŒ
ã²ãšããšã§èšããšãã¢ããªã®åäœç°å¢ããŸãããšããã±ãŒãžã«ããŠãã©ãã§ãåãããã«åããããä»çµã¿ã ããéçºè ãããèšããèªåã®ããœã³ã³ã§ã¯åããã®ã«âŠãã£ãŠããåé¡ã解決ããŠããããã ã
ããŒãç°å¢ãéããšåããªãã£ãŠãã€ã ããã§ãã©ããã£ãŠã€ã³ã¹ããŒã«ããã®ïŒ
äžçªãããããªã®ã¯Docker Desktopãã€ã³ã¹ããŒã«ããæ¹æ³ã ããå ¬åŒãµã€ãããããŠã³ããŒãããŠãã€ã³ã¹ããŒã©ãŒãå®è¡ããã ããWindowsãMacãLinuxã©ãã§ã察å¿ããŠããããã€ã³ã¹ããŒã«ãçµãã£ããã¿ãŒããã«ã§ãdocker versionããšæã£ãŠãããŒãžã§ã³æ å ±ã衚瀺ãããã°æºåå®äºã ãã
ã§ããïŒã§ãæåã¯ãªã«ãããã°ããã®ïŒ
ãŸãã¯ãdocker run hello-worldããå®è¡ããŠã¿ãããããã¯Dockerå ¬åŒã®åäœç¢ºèªçšã€ã¡ãŒãžã§ãæ£ããã€ã³ã¹ããŒã«ã§ããŠããã確èªã§ãããã ãæåãããšãHello from Docker!ããšããã¡ãã»ãŒãžã衚瀺ããããã
ããã§å®éã«ãdocker run hello-worldããå®è¡ããŠã¿ãŠãããHello from Docker!ããšããã¡ãã»ãŒãžã衚瀺ãããã°ãDockerã®ã€ã³ã¹ããŒã«ã¯å®ç§ã ãïŒæ¬¡ã«ãdocker run -d -p 8080:80 nginxãã§nginxãèµ·åããŠããã©ãŠã¶ã§ãlocalhost:8080ãã«ã¢ã¯ã»ã¹ããŠã¿ããã
衚瀺ãããïŒã§ããã€ã¡ãŒãžããšãã³ã³ãããã£ãŠãªã«ãéãã®ïŒ
ã€ã¡ãŒãžã¯ãèšèšå³ããããã³ãã¬ãŒããã¿ãããªãã®ã§ãã³ã³ããã¯ãã®èšèšå³ããäœã£ããå®éã«åããŠãããã®ãã ããããšãã°ã¯ãããŒã®åãã€ã¡ãŒãžã§ãçŒãäžãã£ãã¯ãããŒãã³ã³ããã ããã²ãšã€ã®ã€ã¡ãŒãžããäœåã§ãã³ã³ãããäœãããã ã
ãªãã»ã©ïŒãããããã¡ãã£ãšå®çšçãªããšããã£ãŠã¿ãããªãWebãµãŒããŒãšãåãããã®ïŒ
ãã¡ããããdocker run -d -p 8080:80 nginxããšå®è¡ãããšãnginxã®WebãµãŒããŒãã³ã³ãããšããŠèµ·åãããããã©ãŠã¶ã§ localhost ã®8080çªããŒãã«ã¢ã¯ã»ã¹ãããšãnginxã®åæç»é¢ã衚瀺ãããã¯ãã ããã-dãã¯ããã¯ã°ã©ãŠã³ãå®è¡ãã-p 8080:80ãã¯ããŒã転éã®èšå®ã ãã
ããããäžç¬ã§WebãµãŒããŒãç«ã¡äžãã£ããïŒèªåã®ã¢ããªãã³ã³ããã«ã§ããã®ïŒ
ãã®ããã«Dockerfileãæžããã ããDockerfileã¯ã€ã¡ãŒãžã®äœãæ¹ãæžããã¬ã·ãã¿ãããªãã®ã§ãããŒã¹ã€ã¡ãŒãžã®æå®ããã¡ã€ã«ã®ã³ããŒãã³ãã³ãã®å®è¡ãããŒãã®å ¬éãªã©ãé çªã«èšè¿°ããŠãããã ãããšãã°Node.jsã¢ããªãªããããŒã¹ã«nodeã€ã¡ãŒãžãæå®ããŠããœãŒã¹ã³ãŒããã³ããŒããŠãnpm installããŠãèµ·åã³ãã³ããèšå®ããæµãã ãã
Dockerfileãæžãããããã®ããšã¯ã©ãããã®ïŒ
ãdocker build -t ã¢ããªå .ãã§ã€ã¡ãŒãžããã«ãããŠããdocker run ã¢ããªåãã§å®è¡ãããããã«ãããã€ã¡ãŒãžã¯Docker Hubã«ããã·ã¥ããã°ãä»ã®äººããµãŒããŒã§ãåãã€ã¡ãŒãžã䜿ãããã ãDocker Hubã¯ã€ã¡ãŒãžã®å ±æãµãŒãã¹ã§ãGitHubã®Dockerçã¿ãããªãã®ã ãã
è€æ°ã®ã³ã³ãããçµã¿åãããããšãã¯ã©ãããã®ïŒããšãã°Webã¢ããªãšããŒã¿ããŒã¹ãšãã
Docker Composeã䜿ããšäŸ¿å©ã ããdocker-compose.ymlãšãããã¡ã€ã«ã«ã䜿ããµãŒãã¹ããŸãšããŠå®çŸ©ã§ãããã ãWebã¢ããªãããŒã¿ããŒã¹ããã£ãã·ã¥ãµãŒããŒãªã©ãäžã€ã®ãã¡ã€ã«ã«æžããŠããdocker compose upãäžçºã§å šéšèµ·åã§ããããéçºç°å¢ã®æ§ç¯ããã¡ããã¡ã楜ã«ãªããã ã
ããŒã¿ããŒã¹ã®ããŒã¿ã£ãŠã³ã³ãããæ¢ãããæ¶ãã¡ããã®ïŒ
ãã質åã ããããã©ã«ãã§ã¯ã³ã³ãããåé€ãããšããŒã¿ãæ¶ãããã ãã©ããããªã¥ãŒã ããšããä»çµã¿ã䜿ãã°ããŒã¿ãæ°žç¶åã§ããããããªã¥ãŒã ã¯ã³ã³ããã®å€ã«ããŒã¿ãä¿åããé åã§ãã³ã³ãããäœãçŽããŠãããŒã¿ãæ®ããã ãããšãã³ã³ããå士ã®éä¿¡ã«ã¯Dockerãããã¯ãŒã¯ã䜿ãããåããããã¯ãŒã¯å ãªããµãŒãã¹åã§éä¿¡ã§ãããããIPã¢ãã¬ã¹ãæ°ã«ããªããŠãããã ã
å®éã®çŸå Žã§ã¯ã©ããªãµãã«äœ¿ãããŠããã®ïŒ
éçºç°å¢ã®çµ±äžããã¡ã°ãå€ããŠãŒã¹ã±ãŒã¹ã ããæ°ã¡ã³ããŒãå ¥ã£ãŠããdocker compose upãã§åãç°å¢ãããäœãããããšã¯CI/CDãã€ãã©ã€ã³ã§ã®ãã¹ãå®è¡ããæ¬çªç°å¢ãžã®ãããã€ã«ã䜿ãããããKubernetesãšçµã¿åãããã°å€§èŠæš¡ãªæ¬çªéçšãã§ãããã ã
Dockerã䜿ãå§ãããæ°ãã€ããããšã£ãŠããã®ïŒ
ã€ã¡ãŒãžãµã€ãºã®æé©åã¯æèããã»ããããããããšãã°Node.jsãªãnodeã®éåžžã€ã¡ãŒãžã¯1GBè¿ããããã©ãAlpineçã䜿ãã°100MBå°ã«æãããããããšãã«ãã¹ããŒãžãã«ããšãããã¯ããã¯ã䜿ããšããã«ãã«å¿ èŠãªããŒã«ãæçµã€ã¡ãŒãžã«å«ããã«æžããããããã«è»œéåã§ãããã ã
ã»ãã¥ãªãã£é¢ã§æ³šæããããšãããã®ïŒ
ãããããdocker scoutãããtrivyããªã©ã®ããŒã«ã§ã€ã¡ãŒãžã®è匱æ§ã¹ãã£ã³ãããã®ã倧äºã ããããŒã¹ã€ã¡ãŒãžã¯ãªãã¹ãå ¬åŒã®ãã®ã䜿ã£ãŠã宿çã«ã¢ããããŒãããããšãããšã³ã³ãããrootæš©éã§åãããªãã®ãåºæ¬ã ããDockerfileã§ãŠãŒã¶ãŒãæå®ããŠãæå°éã®æš©éã§åããã®ããã¹ããã©ã¯ãã£ã¹ã ããæ £ããŠããããã²æèããŠã¿ãŠã»ãããªã