ãã®æçš¿ã¯ãRapid7ã®ããªã³ã·ãã«ãœãããŠã§ã¢ãšã³ãžãã¢ã§ããKris Riveraãå ±åå·çããŸããã
Rapid7 ã¯ããã¹ãã³ãæ ç¹ãšããã»ãã¥ãªãã£åæããã³èªååãœãªã¥ãŒã·ã§ã³ã®ãããã€ããŒã§ãããçµç¹ããµã€ããŒã»ãã¥ãªãã£ãžã®ç©æ¥µçãªã¢ãããŒããå®è£ ã§ããããã«ããŸãã 10,000瀟以äžã®ã客æ§ãRapid7ã®ãã¯ãããžãŒããµãŒãã¹ããªãµãŒããå©çšããŠãã»ãã¥ãªãã£ã®ææãåäžãããçµç¹ãå®å šã«çºå±ãããŠããŸãã
ã»ãã¥ãªãã£ç©ºéã¯çµ¶ããå€åããŠããã æ¯æ¥æ°ããè åš ãçºçããŠããŸãã 顧客ã®ããŒãºãæºããããã«ãRapid7ã¯ãå質ãç¶æããªããããœãããŠã§ã¢ãã«ãã®ä¿¡é Œæ§ãšé床ãåäžãããããšã«éç¹ã眮ããŠããŸãã
ãã®ãããRapid7ã¯Dockerã«ç®ãåããŸããã ããŒã 㯠Docker ã䜿çšããŠãéçºãæ¯æŽãã販売ãã€ãã©ã€ã³ããµããŒããããã¹ãç°å¢ãæäŸããèªååãããä¿¡é Œæ§ã®é«ãæ¹æ³ã§æ¬çªç°å¢ã«ãããã€ããŸããÂ
Dockerã䜿çšããããšã§ãRapid7ã¯æåããã»ã¹ãèªååããããšã§ãªã³ããŒãã£ã³ã°ããã»ã¹ãå€é©ããŸããã æ°ããéçºç°å¢ã®ã»ããã¢ããã«æ°æ¥ã§ã¯ãªãæ°åã§æžãããã«ãªããŸããã éçºè ã¯ã宿çãªã³ãŒããªãªãŒã¹ã§å€åããèŠä»¶ããµããŒãã§ããããã«ãããããé«éãªãã«ããäœæã§ããŸãã
ãªã³ããŒãã£ã³ã°ããã»ã¹ã®èªåå
éçºè ãRapid7ã«åããŠåå ãããšããæéãšãšã©ãŒãçºçããããéçãªæåããã»ã¹ã«ééããŸããã éçºç°å¢ã®æ§æã¯ãã»ãšãã©ã®éçºè ã«ãšã£ãŠãšããµã€ãã£ã³ã°ã§ã¯ãããŸããã 圌ãã¯ã»ãšãã©ã®æéãåµé ã«è²»ãããããšæã£ãŠããŸã! ãããŠãç°å¢ã®ã»ããã¢ããã¯ãããã»ã¹ã®äžã§æãé åçã§ãªãéšåã§ãã
Dockerã¯ããã®é¢åãªããã»ã¹ã®èªååãæ¯æŽããŸããã Dockerã䜿çšããããšã§ãRapid7ã¯é©åãªOSãšéçºè ããŒã«ã§äºåæ§æãããã³ã³ããåãããã·ã¹ãã ãäœæããããšãã§ããŸããã Docker Compose ã䜿çšãããšãè€æ°ã®ã³ã³ãããŒãçžäºã«éä¿¡ã§ããã«ã¹ã¿ã ã¹ã¯ãªããããã³ãããã° ããŒã«ãçµã¿èŸŒãããã«å¿ èŠãªããã¯ããããŸããã
ãªã³ããŒãã£ã³ã°ã®ã»ããã¢ããã Docker ãä»ããŠæ§æããããšãä»ã®éçºè ãè€è£œããããã»ã¹ã¯ç°¡åã§ããã ãã€ãŠã¯æ°æ¥ããã£ãŠãããã®ããä»ã§ã¯æ°åã§å®äºããŸãã
ã³ã³ããã®æ¬çªç°å¢ãžã®æ¡åŒµ
Rapid7ããŒã ã¯ã Dockerfileã䜿çšããŠéçºç°å¢ã®ã»ããã¢ãããåçåããŸããã ããã«ãããå¿ èŠãªãã¹ãŠã®äŸåé¢ä¿ãšãœãããŠã§ã¢ããã±ãŒãžãå«ãã€ã¡ãŒãžãäœæããããšãã§ããŸããã
ãããã圌ãã¯ããã§æ¢ãŸããŸããã§ããã ãã®åäžã®Dockerã€ã¡ãŒãžãããè€éãªã·ã¹ãã ã«é²åããã«ã€ããŠãããå€ãã®Dockerã€ã¡ãŒãžãšã³ã³ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ãå¿ èŠã«ãªãããšã«æ°ä»ããŸããã ãã®ãšãã圌ãã¯Docker Composeãã»ããã¢ããã«çµ±åããŸããã
Docker Composeã¯ãRapid7ã®åç°å¢åãã«ç°¡çŽ åãããDockerã€ã¡ãŒãžãã«ãã§ãã ãŸããããŸããŸãªåæåæé ãåå¥ã®å¢çä»ãã³ã³ããã¹ãã«åå²ããé«ã¬ãã«ã®ãµãŒãã¹åé¢ãä¿é²ãããŸããã ããã«ãã³ã³ããééä¿¡ããã©ã€ããŒããããã¯ãŒã¯ãDockerããªã¥ãŒã ãã¢ã³ã«ãŒã䜿çšããç°å¢å€æ°ã®å®çŸ©ãéä¿¡ãšãšã€ãªã¢ã·ã³ã°ã®ããã®ã³ã³ããã®ãªã³ã¯ã«Docker ComposeãæŽ»çšã§ããŸãã
ããã¯Rapid7ã«ãšã£ãŠçã®ã²ãŒã ãã§ã³ãžã£ãŒã§ããããªããªãDocker Composeã¯æ¬åœã«åœŒãã«åäŸã®ãªãæè»æ§ãäžããããã§ãã ãã®åŸãTeams ã¯ãããªã¬ãŒ ã€ãã³ããçºçãããšã (ãµãŒãã¹ã®å®äºæãªã©) ã«ã³ã³ãããŒéã®éä¿¡ã調æŽããã¹ã¯ãªããã远å ããŸããã
Rapid7ã¯ãDockerãDocker Composeãããã³ã¹ã¯ãªããã䜿çšããŠãå®å šãªéçºç°å¢ã確å®ã«è€è£œã§ããéçºããŒã åãã®ãœãªã¥ãŒã·ã§ã³ãäœæããããšãã§ããŸããã åæåãæé©åããããã«ãRapid7ã¯ãDockerãããã«äœ¿çšã§ããæéãããèµ·åæéãççž®ããããšèããŠããŸããã
ãã«ãæéã®ãããªãæé©å
Docker ããŒã¹ ã€ã¡ãŒãžãäœæããåŸãæäžäœã¬ã€ã€ãŒã倿Žããå¿ èŠã¯ã»ãšãã©ãããŸããã åºæ¬çã«ããã®åæãã«ã㯠1 åéãã®ã³ã¹ãã§ãã ç»åã倿ŽãããŠãããã£ãã·ã¥ãããã¬ã€ã€ãŒã䜿çšãããšããã®ããã»ã¹ããã°ããç°¡åã«å®è¡ã§ããŸãã ãã ãããã¹ãŠã®ãœãããŠã§ã¢ã®äŸåé¢ä¿ãæåããåã€ã³ã¹ããŒã«ããå¿ èŠãããããã㯠Docker ã€ã¡ãŒãžã®æŽæ°ããšã« 1 åéãã®ã³ã¹ãã§ãã
ã€ã³ã¹ããŒã«ãããŠãããœãããŠã§ã¢ã®äŸåé¢ä¿ãåºæ¬ã€ã¡ãŒãžã«ã³ãããããããšã§ãåçŽã§å¢åçãªãå€ãã®å Žåã¹ãããå¯èœãªã¹ããŒãžãå¯èœã«ãªããŸãã Docker ã€ã¡ãŒãžã¯ãéçºçšã³ã³ãã¥ãŒã¿ãŒäžã§ãéçºçšã³ã³ãã¥ãŒã¿ãŒäžã§åžžã«äœ¿çšã§ããŸãã
ããããã¹ãŠã®å¹çæ§ã«ããããã§ã«é«éã ã£ã15åã®ããã»ã¹ã5åã«åçåãããéçºè ã¯çç£æ§ãããè¿ éã«é«ããããšã容æã«ãªããŸããã
èªåã§æ§ç¯ããæ¹æ³
ãã®èšå®ãèªåã§è€è£œããæ¹æ³ã«é¢ããã³ãŒãäŸãšèª¬æã確èªããŠãã ãã ãæ¬¡ã«ãéå§ããããã«å¿ èŠãªéèŠãªæé ã«åãçµã¿ãŸãã
ããã«ãŒã®ããŠã³ããŒã
ææ°ããŒãžã§ã³ã® Docker ãããŠã³ããŒãããŠã€ã³ã¹ããŒã« ããDocker-in-Docker ãå®è¡ã§ããããã«ããŸããDocker-in-Docker ã䜿çšãããšãDocker ç°å¢ã§ã³ã³ãããŒå ã« Docker ãã€ã³ã¹ããŒã«ã§ããŸãã ããã«ãããã³ã³ãããŒã§ä»ã®ã³ã³ãããŒãå®è¡ããããã€ã¡ãŒãžããã«ãããã§ããŸãã
Docker-in-Dockerãæå¹ã«ããã«ã¯ã apt install docker.io ãã£ã¹ããªãã¥ãŒã·ã§ã³ãæåã®ã³ãã³ã Dockerfileã®1ã€ãšããŠäœ¿çšããŸããã³ã³ãããŒãæ§æãããããã¹ãã®ã€ã³ã¹ããŒã«ãã Docker ãœã±ãããããŠã³ãããŸãã
# Dockerfile
FROM ubuntu:20.04
# Install dependencies
RUN apt update && \
apt install -y docker.io
次ã«ãCLI ãŸãã¯ã·ã§ã« ã¹ã¯ãªãã ãã¡ã€ã«ã§æ¬¡ã®ã³ãã³ããå®è¡ããŠãDocker ã€ã¡ãŒãžããã«ãããŸãã
docker build -t <docker-image-name>
次ã«ã次ã®ã³ãã³ãã䜿çšã㊠Docker ã³ã³ãããŒãèµ·åããŸãã
docker run -v /var/run/docker.sock:/var/run/docker.sock -ti <docker-image-name>
ããã«ãŒã³ãããã¹ã¯ãªããã®äœ¿çš
åºæ¬ã€ã¡ãŒãžã«éå±€åããã倿Žãã³ãããããããšã¯ãDocker ã®éçºç°å¢ã® ã³ã¢ãé§åãããã®ã§ãã Docker ã¯ãµãŒãã¹åã«åºã¥ããŠã³ã³ãã㌠ID ããã§ããããå®è¡äžã®ã³ã³ãããŒã«å ãã倿Žã¯ç®çã®ã€ã¡ãŒãžã«ã³ããããããŸããÂ
ã³ãã³ãã®å®è¡æã« docker commit ãã¹ã Docker ãœã±ãããã³ã³ãããŒã«ããŠã³ãããããããã³ã³ãããŒã¯ãã¹ã Docker ã€ã³ã¹ããŒã«ã«ããåºæ¬ã€ã¡ãŒãžã«å€æŽãé©çšããŸãã
# ! /bin/bash
SERVICE=${1}
IMAGE=${2}
# Commit changes to image
CONTAINER_ID=$(docker ps -aqf âname=${SERVICE}â)
if [ ! -z â$CONTAINER_IDâ]; then
Echo â--- Committing changes from $SERVICE to $IMAGE --- â
docker commit $CONTAINER_ID $IMAGE
fi
ç°å¢ã®æŽæ°
ãã¹ãã®ã€ã³ã¹ããŒã«ãã Docker ãœã±ãããããŠã³ãããŸãã ãœãŒã¹ ã³ãŒãã®ããŠã³ãã¯ãã³ã³ãã³ããã³ã³ãããŒéã§å
±æãããããšã Docker ã«äŒããããããã£ããªããš :z äžååã§ãã
ãã¹ã ãã·ã³ã® Docker ãœã±ãããã³ã³ãããŒã«ããŠã³ãããå¿ èŠããããŸãã ããã«ãããã³ã³ãããŒå ã§å®è¡ããããã¹ãŠã® Docker æäœã§ããã¹ã Docker ã€ã¡ãŒãžãšã€ã³ã¹ããŒã«ãå®éã«å€æŽãããŸãã ããããªããšãã³ã³ãããŒã«å ãããã倿Žã¯ãã³ã³ãããŒã忢ãããŠåé€ããããŸã§ãã³ã³ãããŒã«ã®ã¿ä¿æãããŸãã
次ã®ã³ãŒãã Docker äœæãã¡ã€ã«ã«è¿œå ããŸãã
# docker-compose.yaml
services:
service-name:
image: image-with-docker:latest
volumes:
- /host/code/path:/container/code/path:z
- /var/run/docker.sock:/var/run/docker.sock
ã³ã³ããŒãã³ãã®ãªãŒã±ã¹ãã¬ãŒã·ã§ã³
Docker Compose ã§é©åãªãµãŒãã¹ãæ§æããããã2 ã€ã®ç°ãªãæ¹æ³ã§ç°å¢ãéå§ã§ããŸãã docker-compose up ã³ãã³ãã䜿çšããããæ¬¡ã®ã³ãã³ãã䜿çšããŠããªã³ã¯ããããµãŒãã¹ã§åã
ã®ãµãŒãã¹ãå®è¡ããŠç°å¢ãéå§ããŸãã
docker compose start webserver
ã¡ã€ã³ ã³ã³ãããŒã¯ããªã³ã¯ãããååã䜿çšããŠãªã³ã¯ããããµãŒãã¹ãåç §ããŸãã ããã«ãããæå®ãããååã§ç°å¢å€æ°ãéåžžã«ç°¡åã«ãªãŒããŒã©ã€ãã§ããŸãã 以äžã®YAMLãã¡ã€ã«ããã§ãã¯ããŠãã ãã:
services:
webserver:
mysql:
ports:
- '3306:3306'
volume
- dbdata:var/lib/mysql
redis:
ports:
- 6379:6379
volumes:
- redisdata:/data
volumes:
dbdata:
redisdata:
çèšïŒ ãµãŒãã¹ããšã«ãåžæãã Docker å ¬åŒã€ã¡ãŒãžã®ããŒãžã§ã³ãéžæããŠæå®ããå¿ èŠããããŸãã ããã«ã MySQL Docker å ¬åŒã€ã¡ãŒãž ã«ã¯ãããã©ã«ãã§èšå®ãããéèŠãªç°å¢å€æ°ãä»å±ããŠããŸãããå¿ èŠã«å¿ããŠããã§æå®ã§ããŸãã
åå¥ã®ãµãŒãã¹ã®ç®¡ç
ã¹ã¿ãã¯ã®å°ããªéšåãéå§ããããšã¯ãéçºè ããã®ç¹å®ã®éšåã®ã¿ãå¿ èŠãšããå Žåã«ã圹ç«ã¡ãŸãã ããšãã°ãMySQL ãµãŒãã¹ãéå§ããã ãã®å Žåã¯ã次ã®ã³ãã³ããå®è¡ããŸãã
docker compose start mysql
次ã®ã³ãã³ãã䜿çšãããšããã®ãµãŒãã¹ãç°¡åã«åæ¢ã§ããŸãã
docker compose stop mysql
ç°å¢ã®æ§æ
ããªã¥ãŒã ãããŒã¿ããŒã¹ãµãŒãã¹ã«ããŠã³ããããš ãã³ã³ããã¯ããããã®ããŒã¿ããŒã¹ã«å€æŽãé©çšãããããã®ããŒã¿ããŒã¹ã¯äžæçãªã³ã³ãããšããŠæ®ãããšãã§ããŸãã
ã¡ã€ã³ ãšã³ã㪠ãã€ã³ããšã¹ã¯ãªãã ãªãŒã±ã¹ãã¬ãŒã¿ãŒã§ãç°å¢å€æ°ãèšå®ãã PROD_BUILD ããã®å±æ§ ./start.sh ãæå®ããŸã -p ããã«ãã¯ããšã³ã㪠ãã€ã³ãå
ã®å€æ°ãèªã¿åããå¿
èŠã«å¿ããŠéçºç°å¢ã®éçšããŒãžã§ã³ãŸãã¯éçºããŒãžã§ã³ããã«ãããŸãã Â
ãŸãããã®ã¹ã¯ãªããã¯æ¬¡ã®ããã«ãªããŸãã
# start.sh
while [ "$1" != ""];
do
case $1 in
-p | --prod) PROD_BUILD="true";;
esac
shift
done
次ã«ãã·ã§ã«ã¹ã¯ãªããã®ãµã³ãã«ã次ã«ç€ºããŸãã
export PROD_BUILD=$PROD_BUILD
3 çªç®ã«ããµã³ãã«ã® Docker äœæãã¡ã€ã«ã次ã«ç€ºããŸãã
# docker-compose.yaml
services:
build-frontend:
entrypoint:
- bash
- -c
- "[[ \"$PROD_BUILD\" == \"true\" ]] && make fe-prod || make fe-dev"
æèšïŒ å®å
šã«æ©èœããDockeräœæãã¡ã€ã«ã®äœæãç®æããŠããå Žåã¯ãäžã«å¥œã¿ã®ç»å build-frontend ã远å ããããšãå¿ããªãã§ãã ããã
çºçããåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãå¿ èŠãªå Žåã¯ã©ããªããŸãã? å®è¡äžã®ã³ã³ãããŒå ã§ã®ãããã°ã«å¿ èŠãªã®ã¯ãããŠã³ãããããœãŒã¹ ã³ãŒãå ã®é©åãªãããã° ã©ã€ãã©ãªãšããããã¬ãŒãããŠã³ãããããã®éããŠããããŒãã ãã§ãã ãããç§ãã¡ã®YAMLãã¡ã€ã«ã§ã:
# docker-compose.yaml
services:
webserver:
ports:
- '5678:5678'
links:
- mysql
- redis
entrypoint:
- bash
- -c
- ./start-webserver.sh
æèšïŒ åã®äŸãšåæ§ã«ãæ©èœçãªDockeräœæãã¡ã€ã«ãäœæãããšãã«ããã®äžã« webserver ç»åãæå®ããããšãå¿ããªãã§ãã ããã
éžæãããšãã£ã¿ãŒã§ãæå®ããããŒãã䜿çšããŠãããã¬ãŒãã¢ã¿ããããããã®èµ·åæ§æãæå®ããŸãã ã³ã³ãããŒãå®è¡ãããããæ§æãå®è¡ãããšããããã¬ãŒãã¢ã¿ãããããŸãã
#launch-setting.json
{
"configurations" : [
{
"name": "Python: Remote Attach",
"type": "python",
"request": "attach",
"port": 5678,
"host": "localhost",
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "."
}
]
}
]
}
ãã¹ãŠãæ©èœããããšã確èªãã
ãã«ã¹ã¿ãã¯ãå®è¡ããããšãå®çŸ©ããã webserver ããŒãã®ãã©ãŠã¶ãä»ããŠã¡ã€ã³ãšã³ããªãã€ã³ãWebãµãŒããŒã«ç°¡åã«ã¢ã¯ã»ã¹ã§ããŸãã
ãã®ã³ãã³ããå®è¡ãããš docker ps ãå®è¡äžã®ã³ã³ãããŒã衚瀺ãããŸãã Docker ã¯ã³ã³ãããŒéã®éä¿¡ã管çããŠããŸããÂ
ããã§ããœãããŠã§ã¢ãµãŒãã¹å šäœãDockerã§å®å šã«å®è¡ãããŸããã ãã¹ãŠã®ã³ãŒãã¯ãDocker ã³ã³ãããŒå ã®ãã¹ã ã³ã³ãã¥ãŒã¿ãŒã«ååšããŸãã éçºç°å¢ã¯ãDocker ã®ã¿ã䜿çšããŠå®å šã«ç§»æ€ã§ããããã«ãªããŸããã
éèŠãªãã¬ãŒããªããèšæ¶ãã
ãã®æ¹æ³ã«ã¯ããã€ãã®å¶éããããŸãã ãŸããDocker ã§éçºè ç°å¢ãå®è¡ãããšã远å ã®ãªãœãŒã¹ ãªãŒããŒããããçºçããŸãã Dockerãå®è¡ããå¿ èŠãããããã®çµæã远å ã®ã³ã³ãã¥ãŒãã£ã³ã°ãªãœãŒã¹ãå¿ èŠã«ãªããŸãã ãŸããè€æ°ã®ã¹ããŒãžãå«ããã«ã¯ãã³ã³ãããŒéã®éä¿¡ãå¯èœã«ããããã®æçµçãªãªãŒã±ã¹ãã¬ãŒã·ã§ã³ ã¬ã€ã€ãŒãšããŠã¹ã¯ãªãããäœæããå¿ èŠããããŸãã
ãŸãšã
Rapid7ã®éçºããŒã ã¯ãDockerã䜿çšããŠéçºç°å¢ãè¿ éã«äœæããŠããŸãã Docker CLIãDocker DesktopãDocker Composeãããã³ã·ã§ã«ã¹ã¯ãªããã䜿çšããŠãéåžžã«ãŠããŒã¯ã§å ç¢ãªDockerãã¬ã³ããªãŒãªç°å¢ãäœæããŸããããã䜿çšããŠãéçºç°å¢ã®ä»»æã®éšåãã¹ãã³ã¢ããã§ããŸãã
ãã®ã»ããã¢ããã¯ãRapid7ãããã³ããšã³ãã¢ã»ãããã³ã³ãã€ã«ãããããã£ãã·ã¥ãµãŒããŒãšããŒã¿ããŒã¹ãµãŒããŒãèµ·åããããããŸããŸãªãã©ã¡ãŒã¿ãŒã§ããã¯ãšã³ããµãŒãã¹ãå®è¡ããããã¢ããªã±ãŒã·ã§ã³ã¹ã¿ãã¯å šäœãèµ·åãããããã®ã«ã圹ç«ã¡ãŸãã å®è¡äžã®ã³ã³ãããŒå ã« Docker ãœã±ãããããŠã³ããã "Docker-in-Docker" ã¢ãããŒãã䜿çšãããšããããå¯èœã«ãªããŸãã äŸåé¢ä¿ãæŽæ°ãŸãã¯ã€ã³ã¹ããŒã«ãããåŸã«ã¬ã€ã€ãŒãåºæ¬ã€ã¡ãŒãžã«ã³ããããã Docker ã®æ©èœãéèŠã§ããÂ
ã·ã§ã«ã¹ã¯ãªããã¯ãå¿ èŠãªç°å¢å€æ°ããšã¯ã¹ããŒãããç¹å®ã®ããã»ã¹ãç¹å®ã®é åºã§å®è¡ããŸãã æåŸã«ãDocker Compose ã¯ãé©åãªãµãŒãã¹ ã³ã³ãããŒãšäŸåé¢ä¿ãå®è¡ãããŠããããšã確èªããŸãã
å°æ¥ã®éçºç®æšã®éæ
DockerããŒã«ãã§ãŒã³ã«äŸåããããšã¯ãã¢ããªã±ãŒã·ã§ã³ã¹ã¿ãã¯ã®ããããéšåãšäºææ§ã®ããäžè²«ããç°å¢ãäœæããã®ã«åœ¹ç«ã€ãããRapid7ã«ãšã£ãŠæ¬åœã«æçã§ãã ãã®çµ±åã«ãããRapid7ã¯æ¬¡ã®ããšãè¡ãããšãã§ããŸãããÂ
- éåžžã«ä¿¡é Œæ§ã®é«ããœãããŠã§ã¢ãé«åºŠãªé¡§å®¢ç°å¢ã«å°å ¥
- éçºäžã«ããŒãžããåã«ã³ãŒããåæãã
- ããå®å®ããã³ãŒããæäŸ
- ãªã³ããŒãã£ã³ã°ã®ç°¡çŽ åÂ
- éåžžã«æè»ã§æ§æå¯èœãªéçºç°å¢ã圢æ
Dockerã䜿çšããããšã§ãRapid7ã¯ããã»ã¹ãç¶ç¶çã«æ¹è¯ããå¯èœãªããšã®éçãè¶ ããŠããŸãã 圌ãã®æ¬¡ã®ç®æšã¯ãæ¬çªã°ã¬ãŒãã®å®å®ãããã«ããæ¯æ¥æäŸããããšã§ãããDockerãããã«å°éããã®ã«åœ¹ç«ã€ãšç¢ºä¿¡ããŠããŸãã