ð³ Docker
Docker ã¯ã¢ããªã±ãŒã·ã§ã³ãåé¢ãããã³ã³ããå ã§å®è¡ããããã®ãã©ãããã©ãŒã ã§ãããã®ããŒãã·ãŒãã«ã¯ãã€ã¡ãŒãžãã³ã³ããããããã¯ãŒã¯ãããªã¥ãŒã ãããã³ Docker Compose ãš Swarm ãæ±ãããã®ã³ãã³ããå«ãŸããŠããŸãã
ðŠ åºæ¬ã³ãã³ã
| ã³ãã³ã | äŸ | 説æ | 
|---|---|---|
| docker | ãµãã³ãã³ããå®è¡ããã³ã³ãããã€ã¡ãŒãžããããã¯ãŒã¯ãããªã¥ãŒã ã管çããããã®ã¡ã€ã³ CLI ã³ãã³ã | |
| docker version | ã€ã³ã¹ããŒã«æžã¿ã® Docker ããŒãžã§ã³ (ã¯ã©ã€ã¢ã³ããšãµãŒããŒ) ã衚瀺ãã€ã³ã¹ããŒã«ç¢ºèªã«äŸ¿å© | |
| docker version --format '{{.Client.APIVersion}}' | Docker ã¯ã©ã€ã¢ã³ã API ããŒãžã§ã³ã®ã¿ã衚瀺 | |
| docker version --format '{{.Server.Version}}' | Docker ãµãŒã㌠(ãšã³ãžã³) ããŒãžã§ã³ã®ã¿ã衚瀺 | |
| docker version --format '{{json .}}' | JSON 圢åŒã§å®å šãªããŒãžã§ã³æ å ±ãåºå | |
| docker system info | Docker ã·ã¹ãã æ å ±ã衚瀺: ã³ã³ããæ°ãã€ã¡ãŒãžæ°ããªãœãŒã¹ãªã© | |
| docker info | Docker ã®ããŒã¿: ããŒãžã§ã³ããããã¯ãŒã¯ãã³ã³ããæ°ãã€ã¡ãŒãžæ°ã衚瀺 | |
| docker info --format '{{json .}}' | JSON 圢åŒã§åºå â èªååã«äŸ¿å© | |
| docker info --format '{{.NCPU}} CPUs, {{.MemTotal}} bytes RAM' | CPU æ°ãšç·ã¡ã¢ãªã衚瀺 | |
| docker info --format '{{.Driver}}' | Docker ã䜿çšããŠããã¹ãã¬ãŒãžãã©ã€ãã衚瀺 | |
| docker image pull | Docker Hub ãŸãã¯ä»ã®ã¬ãžã¹ããªããã€ã¡ãŒãžãããŠã³ããŒããã³ã³ããã¯ã€ã¡ãŒãžãªãã§ã¯å®è¡äžå¯ | |
| docker pull ubuntu | ææ°ã® Ubuntu ã€ã¡ãŒãžãããŠã³ããŒã | |
| docker pull nginx:alpine | Alpine Linux ããŒã¹ã®è»œé Nginx ã€ã¡ãŒãžãããŠã³ããŒã | |
| docker pull redis:7 | Redis ã€ã¡ãŒãžã®ããŒãžã§ã³ 7 ãããŠã³ããŒã | |
| docker container run | ã€ã¡ãŒãžããæ°ããã³ã³ãããäœæããŠå®è¡ | |
| docker run -it ubuntu bash | Ubuntu ãã€ã³ã¿ã©ã¯ãã£ã㪠Bash ã¿ãŒããã«ã§å®è¡ | |
| docker run -d nginx | Nginx ããã¿ãã (ããã¯ã°ã©ãŠã³ã) ã¢ãŒãã§å®è¡ | |
| docker run -p 8080:80 nginx | Nginx ãå®è¡ããã³ã³ããã®ããŒã 80 ããã¹ãã®ããŒã 8080 ã«ãã€ã³ã | |
| docker container ls | å®è¡äžã®ã³ã³ãããäžèŠ§è¡šç€º | |
| docker ps | å®è¡äžã®ã³ã³ããã®ã¿ã衚瀺 | |
| docker ps -a | 忢äžãå«ããŠãã¹ãŠã®ã³ã³ããã衚瀺 | |
| docker ps --format '{{.Names}}' | ã³ã³ããåã®ã¿ãåºå | |
| docker container start | 忢äžã®ã³ã³ãããèµ·å | |
| docker start container_name | ã³ã³ãããååã§èµ·å | |
| docker start $(docker ps -aq) | ãã¹ãŠã®ã³ã³ãããèµ·å | |
| docker start -ai container_name | ã³ã³ãããèµ·åãã€ã³ã¿ã©ã¯ãã£ãã¿ãŒããã«ã«æ¥ç¶ | |
| docker container stop | å®è¡äžã®ã³ã³ããã忢 | |
| docker stop container_name | ã³ã³ãããååã§åæ¢ | |
| docker stop $(docker ps -q) | ãã¹ãŠã®å®è¡äžã³ã³ããã忢 | |
| docker stop -t 5 container_name | ã³ã³ããã忢ããçµäºãŸã§ 5 ç§åŸ æ© | |
| docker container restart | ã³ã³ãããåèµ·å | |
| docker restart container_name | ç¹å®ã®ã³ã³ãããåèµ·å | |
| docker restart $(docker ps -q) | ãã¹ãŠã®å®è¡äžã³ã³ãããåèµ·å | |
| docker restart -t 10 container_name | 10 ç§åŸ æ©ããŠããã³ã³ãããåèµ·å | |
| docker container rm | ã³ã³ãããåé€ | |
| docker rm container_name | ç¹å®ã®åæ¢äžã³ã³ãããåé€ | |
| docker rm $(docker ps -aq) | 忢äžã³ã³ããããã¹ãŠåé€ | |
| docker rm -f container_name | å®è¡äžã®ã³ã³ããã匷å¶åé€ | |
| docker image ls | ããŠã³ããŒãæžã¿ã€ã¡ãŒãžãäžèŠ§è¡šç€º | |
| docker images | ãã¹ãäžã®ãã¹ãŠã®ã€ã¡ãŒãžã衚瀺 | |
| docker images -a | äžéã¬ã€ã€ãŒãå«ããã¹ãŠã®ã€ã¡ãŒãžã衚瀺 | |
| docker images --format '{{.Repository}}:{{.Tag}}' | ã€ã¡ãŒãžåãšã¿ã°ã®ã¿ãåºå | |
| docker image rm | ããŒã«ã«ã¹ãã¬ãŒãžããã€ã¡ãŒãžãåé€ | |
| docker rmi test1:latest | ãªããžã㪠 | |
| docker rmi 1a2b3c4d5e6f | ã€ã¡ãŒãžã ID ã§åé€ | |
| docker rmi $(docker images -q) | ãã¹ãŠã®ã€ã¡ãŒãžãåé€ (泚æïŒ) | 
ð ã³ã³ãã管ç
| ã³ãã³ã | äŸ | 説æ | 
|---|---|---|
| docker container exec | å®è¡äžã®ã³ã³ããå ã§ã³ãã³ããå®è¡ | |
| docker exec -it container bash | 
 | |
| docker exec container ls /app | ã³ã³ããå
  | |
| docker exec -d container touch /tmp/testfile | ãã¿ããã¢ãŒã (åŸ ããã«çµäº) ã§ã³ãã³ããå®è¡ | |
| docker container logs | ã³ã³ãããã°ã衚瀺 | |
| docker logs container | 
 | |
| docker logs -f container | ã³ã³ãããã°ããªã¢ã«ã¿ã€ã ã§è¿œè·¡ | |
| docker logs --tail 50 container | çŽè¿ 50 è¡ã®ãã°ã衚瀺 | |
| docker inspect | ã³ã³ãããŸãã¯ã€ã¡ãŒãžã®è©³çް JSON æ å ±ãååŸ | |
| docker inspect container | 
 | |
| docker inspect --format '{{.NetworkSettings.IPAddress}}' container | ã³ã³ããã® IP ã¢ãã¬ã¹ã衚瀺 | |
| docker container stats | ã³ã³ããã®ãªãœãŒã¹äœ¿çšç¶æ³ããªã¢ã«ã¿ã€ã ã§è¡šç€º | |
| docker stats | ãã¹ãŠã®ã³ã³ããã® CPU, ã¡ã¢ãª, ãããã¯ãŒã¯, ãã£ã¹ã¯äœ¿çšéã衚瀺 | |
| docker stats container_name | ç¹å®ã®ã³ã³ããã®ã¿ã®çµ±èšã衚瀺 | |
| docker stats --no-stream | äžåºŠã ãã¹ãããã·ã§ããã衚瀺ããŠçµäº | |
| docker container rename | ã³ã³ããåãå€æŽ | |
| docker rename old_name new_name | 
 | |
| docker container cp | ã³ã³ãããšãã¹ãéã§ãã¡ã€ã«ãã³ã㌠| |
| docker cp container:/src/file.txt ./file.txt | ã³ã³ãããããã¹ãã®çŸåšã®ãã£ã¬ã¯ããªãžãã¡ã€ã«ãã³ã㌠| |
| docker cp ./config.yaml container:/app/config.yaml | ãã¹ãããã³ã³ãããžãã¡ã€ã«ãã³ã㌠| |
| docker cp CONTAINER:/var/logs/app.log - | tar x -O | grep "ERROR" | ã³ã³ããã®ãã°ãã¹ããªãŒãã³ã°ã âERRORâ ããã£ã«ã¿ããŠä¿åããåºå | |
| docker container top | ã³ã³ããå ã§å®è¡äžã®ããã»ã¹ã衚瀺 | |
| docker top container | 
 | |
| docker container pause | ã³ã³ããå ã®ãã¹ãŠã®ããã»ã¹ãäžæåæ¢ | |
| docker pause container | 
 | |
| docker container unpause | äžæåæ¢äžã®ã³ã³ãããåé | |
| docker unpause container | 
 | |
| docker container update | åèµ·åããã«ã³ã³ããèšå®ãæŽæ° | |
| docker update --memory 500m container | ã³ã³ããã®ã¡ã¢ãªäœ¿çšéã 500 MB ã«å¶é | 
ð§± ã€ã¡ãŒãžãš Dockerfile
| ã³ãã³ã | äŸ | 説æ | 
|---|---|---|
| docker buildx build | Dockerfile ããã€ã¡ãŒãžããã«ã | |
| docker build -t my_image . | ã«ã¬ã³ããã£ã¬ã¯ããªãã  | |
| docker build -t my_image:1.0 . | ããŒãžã§ã³  | |
| docker build --no-cache -t my_image . | ãã£ãã·ã¥ã䜿ããã¯ãªãŒã³ãã«ã | |
| docker container commit | ã³ã³ããã®çŸåšã®ç¶æ ããã€ã¡ãŒãžãäœæ | |
| docker commit container my_img:v1 | 
 | |
| docker commit -m "Added config" container my_img:v2 | ã³ãããã¡ãã»ãŒãžä»ãã§ã€ã¡ãŒãžãäœæ | |
| docker commit -a "John Doe" container my_img:latest | äœæè ãæå®ããŠã€ã¡ãŒãžãäœæ | |
| docker image tag | ã€ã¡ãŒãžã«ã¿ã°ã远å ãŸãã¯å€æŽ | |
| docker tag my_image myrepo/my_image:latest | ã¬ãžã¹ã㪠 | |
| docker tag my_image:1.0 my_image:stable | ã€ã¡ãŒãž  | |
| docker tag my_image my_image:backup | ããŒã«ã«ã€ã¡ãŒãžã«  | |
| docker image push | ã€ã¡ãŒãžã Docker Hub ãŸãã¯ä»ã®ã¬ãžã¹ããªã«ããã·ã¥ | |
| docker push myrepo/my_image:latest | 
 | |
| docker push myrepo/my_image:1.0 | ã¿ã°  | |
| docker push myrepo/my_image | ããã©ã«ãã¿ã°  | |
| docker login | Docker Hub ãŸãã¯ä»ã®ã¬ãžã¹ããªã«èªèšŒ | |
| docker login | Docker Hub ã«ãŠãŒã¶ãŒåãšãã¹ã¯ãŒãã§ãã°ã€ã³ | |
| docker login myregistry.local:5000 | ãã©ã€ããŒãã¬ãžã¹ããªã«ãã°ã€ã³ | |
| docker login -u username -p password | ãŠãŒã¶ãŒåãšãã¹ã¯ãŒãã§ãã°ã€ã³ (éæšå¥š) | |
| docker logout | Docker Hub ãŸãã¯ä»ã®ã¬ãžã¹ããªãããã°ã¢ãŠã | |
| docker logout | Docker Hub ãããã°ã¢ãŠã | |
| docker logout myregistry.local:5000 | ãã©ã€ããŒãã¬ãžã¹ããªãããã°ã¢ãŠã | |
| HEALTHCHECK | ã³ã³ããã®æ£åžžæ§ãèªåãã§ãã¯ãã Dockerfile åœä»€ | |
| HEALTHCHECK --interval=30s --timeout=5s --retries=3 CMD curl -f http://localhost/ || exit 1 | 30 ç§ããšã«ãµãŒãã¹å¯çšæ§ã確èªãããã«ã¹ãã§ãã¯ã远å | |
| docker inspect --format='{{json .State.Health}}' container_name | å®è¡äžã³ã³ããã®ãã«ã¹ãã§ãã¯ã¹ããŒã¿ã¹ãç¢ºèª | 
ð ãããã¯ãŒã¯ãšããªã¥ãŒã
| ã³ãã³ã | äŸ | 説æ | 
|---|---|---|
| docker network ls | ãã¹ãŠã® Docker ãããã¯ãŒã¯ãäžèŠ§è¡šç€º | |
| docker network ls | äœææžã¿ã®ãããã¯ãŒã¯ããã¹ãŠè¡šç€º | |
| docker network ls --filter driver=bridge | 
 | |
| docker network ls --format '{{.Name}}' | ãããã¯ãŒã¯åã®ã¿ã衚瀺 | |
| docker network create | æ°ãã Docker ãããã¯ãŒã¯ãäœæ | |
| docker network create my_net | 
 | |
| docker network create --driver bridge my_bridge_net | 
 | |
| docker network create --subnet=192.168.10.0/24 my_custom_net | æå®ãããµããããã§ãããã¯ãŒã¯ãäœæ | |
| docker network connect | ã³ã³ããããããã¯ãŒã¯ã«æ¥ç¶ | |
| docker network connect my_net container | 
 | |
| docker network connect --alias db_net my_net container | ãšã€ãªã¢ã¹  | |
| docker network disconnect | ã³ã³ããããããã¯ãŒã¯ããåæ | |
| docker network disconnect my_net container | 
 | |
| docker volume ls | ãã¹ãŠã® Docker ããªã¥ãŒã ãäžèŠ§è¡šç€º | |
| docker volume ls | ãã¹ãŠã® Docker ããªã¥ãŒã ã衚瀺 | |
| docker volume ls --filter dangling=true | æªäœ¿çšã®ããªã¥ãŒã ã衚瀺 | |
| docker volume create | æ°ãã Docker ããªã¥ãŒã ãäœæ | |
| docker volume create my_vol | 
 | |
| docker volume create --driver local --opt type=tmpfs my_tmp_vol | tmpfs ã䜿çšããŠäžæããªã¥ãŒã ãäœæ | |
| docker volume inspect | ããªã¥ãŒã ã®è©³çްæ å ±ã衚瀺 | |
| docker volume inspect my_vol | 
 | |
| docker volume rm | ããªã¥ãŒã ãåé€ | |
| docker volume rm my_vol | 
 | |
| docker volume rm $(docker volume ls -qf dangling=true) | æªäœ¿çšã®ããªã¥ãŒã ããã¹ãŠåé€ | 
ð§© Docker ãã©ã°ã€ã³
| ã³ãã³ã | äŸ | 説æ | 
|---|---|---|
| docker plugin ls | ã€ã³ã¹ããŒã«æžã¿ã® Docker ãã©ã°ã€ã³ãäžèŠ§è¡šç€º | |
| docker plugin ls | ãã¹ãŠã®ãã©ã°ã€ã³ãšãã®ç¶æ ã衚瀺 | |
| docker plugin install | ã¬ãžã¹ããªãã Docker ãã©ã°ã€ã³ãã€ã³ã¹ããŒã« | |
| docker plugin install vieux/sshfs | SSHFS ããªã¥ãŒã ãã©ã°ã€ã³ãã€ã³ã¹ããŒã« | |
| docker plugin install store/weaveworks/net-plugin:latest_release | Weave ãããã¯ãŒã¯ãã©ã°ã€ã³ãã€ã³ã¹ããŒã« | |
| docker plugin disable | ã€ã³ã¹ããŒã«æžã¿ãã©ã°ã€ã³ãç¡å¹å | |
| docker plugin disable vieux/sshfs | SSHFS ãã©ã°ã€ã³ãç¡å¹å | |
| docker plugin enable | 以åç¡å¹åããããã©ã°ã€ã³ãæå¹å | |
| docker plugin enable vieux/sshfs | SSHFS ãã©ã°ã€ã³ãæå¹å | |
| docker plugin rm | Docker ãã©ã°ã€ã³ãåé€ | |
| docker plugin rm vieux/sshfs | SSHFS ãã©ã°ã€ã³ãåé€ | 
ð Docker Compose
| ã³ãã³ã | äŸ | 説æ | 
|---|---|---|
| docker compose up | docker-compose.ymlã«å®çŸ©ãããã³ã³ãããèµ·å | |
| docker compose up | ã«ã¬ã³ããã£ã¬ã¯ããªã®ãã¹ãŠã®ãµãŒãã¹ã察話ã¢ãŒãã§èµ·å | |
| docker compose up -d | ãµãŒãã¹ããã¿ããã¢ãŒã (ããã¯ã°ã©ãŠã³ã) ã§èµ·å | |
| docker compose up --build | ãµãŒãã¹ãèµ·åããåã«ã€ã¡ãŒãžããã«ã | |
| docker compose down | upã§äœæãããã³ã³ããããããã¯ãŒã¯ãããªã¥ãŒã ã忢ããŠåé€ | |
| docker compose down | ãã¹ãŠã®ãµãŒãã¹ã忢ãé¢é£ãªãœãŒã¹ãåé€ | |
| docker compose down --volumes | Compose ãäœæããããªã¥ãŒã ãåé€ | |
| docker compose down --rmi all | Compose ãäœæããã€ã¡ãŒãžãåé€ | |
| docker compose logs | å šãµãŒãã¹ãŸãã¯ç¹å®ãµãŒãã¹ã®ãã°ã衚瀺 | |
| docker compose logs | å šãµãŒãã¹ã®ãã°ã衚瀺 | |
| docker compose logs -f | ãã°ããªã¢ã«ã¿ã€ã ã§è¿œè·¡ | |
| docker compose logs web | 
 | |
| docker compose exec | å®è¡äžã®ãµãŒãã¹ã³ã³ããå ã§ã³ãã³ããå®è¡ | |
| docker compose exec web bash | 
 | |
| docker compose exec db ls /var/lib/postgresql | ããŒã¿ããŒã¹ã³ã³ããå
ã§  | |
| docker compose exec -d worker touch /tmp/done | 
 | |
| docker compose build | ãµãŒãã¹ã€ã¡ãŒãžããã«ããŸãã¯åãã«ã | |
| docker compose build | 
 | |
| docker compose build web | 
 | |
| docker compose build --no-cache | ãã£ãã·ã¥ã䜿ããã«ã€ã¡ãŒãžããã«ã | |
| docker compose ps | ãã¹ãŠã®ãµãŒãã¹ãšã³ã³ããã®ç¶æ ã衚瀺 | |
| docker compose ps -a | 忢äžãå«ããŠãã¹ãŠã®ã³ã³ããã衚瀺 | |
| docker compose ps --services | ãµãŒãã¹åã®ã¿ã衚瀺 | |
| docker compose pull | ã¬ãžã¹ããªãããµãŒãã¹ã€ã¡ãŒãžãããŠã³ããŒã/æŽæ° | |
| docker compose pull web | 
 | |
| docker compose pull --ignore-pull-failures | äžéšã®ã€ã¡ãŒãžã倱æããŠãç¶ç¶ | |
| docker compose restart | ãã¹ãŠãŸãã¯æå®ãããµãŒãã¹ãåèµ·å | |
| docker compose restart db | 
 | |
| docker compose restart -t 10 | 10 ç§ã®ã¿ã€ã ã¢ãŠãã§åèµ·å | |
| docker compose config | æçµç㪠Compose èšå®ã YAML 圢åŒã§è¡šç€º | |
| docker compose config --services | æ§æå ã®ãã¹ãŠã®ãµãŒãã¹ãäžèŠ§è¡šç€º | |
| docker compose config --volumes | æ§æå ã®ãã¹ãŠã®ããªã¥ãŒã ãäžèŠ§è¡šç€º | |
| docker compose start | 忢äžã®ãµãŒãã¹ãã³ã³ãããåäœæããã«èµ·å | |
| docker compose start web | 
 | |
| docker compose start db api | è€æ°ãµãŒãã¹ãåæã«èµ·å | |
| docker compose stop | ãµãŒãã¹ãã³ã³ãããåé€ããã«åæ¢ | |
| docker compose stop web | 
 | |
| docker compose stop -t 5 | 5 ç§ã®ã¿ã€ã ã¢ãŠãã§ãµãŒãã¹ã忢 | 
ð€ ãšã¯ã¹ããŒããšã€ã³ããŒã
| ã³ãã³ã | äŸ | 説æ | 
|---|---|---|
| docker image save | 1ã€ä»¥äžã® Docker ã€ã¡ãŒãžã tar ã¢ãŒã«ã€ãã«ä¿åããåŸã§ã€ã³ããŒãã転éå¯èœã«ãã | |
| docker save -o image.tar my_img:tag | Docker ã€ã¡ãŒãžã tar ã¢ãŒã«ã€ããã¡ã€ã«ã«ä¿å | |
| docker save my_image > my_image.tar | å¥ã®æ¹æ³ã§ã€ã¡ãŒãžããã¡ã€ã«ã«ä¿å | |
| docker save -o redis_latest.tar redis:latest | ç¹å®ã® Redis ã€ã¡ãŒãžããã¡ã€ã«ã«ä¿å | |
| docker image load | 以åä¿åãã tar ã¢ãŒã«ã€ããã Docker ã€ã¡ãŒãžãããŒã | |
| docker load < image.tar | tar ã¢ãŒã«ã€ããã¡ã€ã«ããã€ã¡ãŒãžãããŒã | |
| docker load --input redis_latest.tar | ãã©ã¡ãŒã¿ã§ãã¡ã€ã«ãæå®ããŠã€ã¡ãŒãžãããŒã | |
| docker load --quiet < my_image.tar | é²è¡è¡šç€ºãªãã§ã€ã¡ãŒãžãããŒã | |
| docker container export | ã³ã³ããã®ãã¡ã€ã«ã·ã¹ãã ãå±¥æŽãã¡ã¿ããŒã¿ãªãã§ tar ã¢ãŒã«ã€ããšããŠãšã¯ã¹ããŒã | |
| docker export container > file.tar | ã³ã³ããã®ãã¡ã€ã«ã·ã¹ãã ãã¢ãŒã«ã€ãã«ãšã¯ã¹ããŒã | |
| docker export my_container > my_container_fs.tar | ååã§ã³ã³ããããšã¯ã¹ããŒã | |
| docker export -o container_fs.tar container_id | 
 | |
| docker image import | ãã¡ã€ã«ã·ã¹ãã ã® tar ã¢ãŒã«ã€ãããæ°ããã€ã¡ãŒãžãäœæ | |
| docker import file.tar new_img | ã¢ãŒã«ã€ããã¡ã€ã«ãæ°ãã Docker ã€ã¡ãŒãžãšããŠã€ã³ããŒã | |
| docker import https://example.com/image.tar my_new_image | URL ããçŽæ¥ã€ã¡ãŒãžãã€ã³ããŒã | |
| docker import - my_image < file.tar | æšæºå ¥åããã€ã³ããŒã | 
ð§¹ ã¯ãªãŒã³ã¢ãããšèšºæ
| ã³ãã³ã | äŸ | 説æ | 
|---|---|---|
| docker system df | Docker ãã£ã¹ã¯äœ¿çšéã衚瀺: ããªã¥ãŒã ãã€ã¡ãŒãžãã³ã³ããããã«ããã£ãã·ã¥ | |
| docker system df -v | åã€ã¡ãŒãžãã³ã³ãããããªã¥ãŒã ã®è©³çްåºå | |
| docker system df --format '{{json .}}' | JSON 圢åŒã§æ å ±ãåºå | |
| docker system prune | æªäœ¿çšã® Docker ããŒã¿ãåé€: 忢äžã³ã³ãããæªäœ¿çšãããã¯ãŒã¯ãäžèŠã€ã¡ãŒãžããã«ããã£ãã·ã¥ | |
| docker system prune -a | äžéã¬ã€ã€ãŒãå«ãæªäœ¿çšã€ã¡ãŒãžãåé€ | |
| docker system prune --volumes | æªäœ¿çšããªã¥ãŒã ãä»ã®ãªãœãŒã¹ãšå ±ã«åé€ | |
| docker image prune | æªäœ¿çšã® Docker ã€ã¡ãŒãžãåé€ (ãã³ã°ãªã³ã°ã¬ã€ã€ãŒå«ã) | |
| docker image prune -a | æªäœ¿çšã€ã¡ãŒãžããã¹ãŠåé€ | |
| docker image prune --filter "until=24h" | 24æé以äžåã®ã€ã¡ãŒãžãåé€ | |
| docker container prune | 忢äžã®ã³ã³ããããã£ã«ã¿ã§åé€ãæªæå®ãªããã¹ãŠåé€ | |
| docker container prune --filter "until=24h" | 24æé以äžåã®åæ¢äžã³ã³ãããåé€ | |
| docker container prune --force | 確èªãªãã§åé€ | 
ð Docker Swarm
| ã³ãã³ã | äŸ | 説æ | 
|---|---|---|
| docker swarm init | çŸåšã®ããŒãã§æ°ãã Docker Swarm ã¯ã©ã¹ã¿ãŒãåæå | |
| docker swarm init --advertise-addr 192.168.1.100 | IP ã¢ãã¬ã¹ãæå®ããŠã¯ã©ã¹ã¿ãŒãåæå | |
| docker swarm init --listen-addr 0.0.0.0:2377 | ãªãã¹ã³ããŒããæå®ããŠåæå | |
| docker service create | Swarm ã¯ã©ã¹ã¿ãŒã§æ°ãããµãŒãã¹ãäœæ | |
| docker service create --name nginx nginx | Swarm å ã§ Nginx ãµãŒãã¹ãäœæ | |
| docker service create --replicas 3 --name web webserver | 3 ã¬ããªã«ã®ãµãŒãã¹ãäœæ | |
| docker service create --name redis --publish 6379:6379 redis | ããŒããããã³ã°ä»ãã§ãµãŒãã¹ãäœæ | |
| docker stack deploy | Compose ãã¡ã€ã«ã«åºã¥ã㊠Swarm ã¯ã©ã¹ã¿ãŒã«ã¹ã¿ãã¯ãããã〠| |
| docker stack deploy -c docker-compose.yml mystack | Compose ãã¡ã€ã«ããã¹ã¿ãã¯ãããã〠| |
| docker stack deploy --with-registry-auth -c compose.yml mystack | ã¬ãžã¹ããªèªèšŒè»¢éãæå¹ã«ããŠããã〠| |
| docker stack deploy -c swarm-compose.yml mystack | å¥ã® Compose ãã¡ã€ã«ã§ã¹ã¿ãã¯ãããã〠| |
| docker stack rm | Swarm ã¯ã©ã¹ã¿ãŒããã¹ã¿ãã¯ãåé€ | |
| docker stack rm mystack | 
 | |
| docker stack rm | ãã¹ãŠã®ã¹ã¿ãã¯ãåé€ (éæšå¥š) | |
| docker stack rm mystack && docker swarm leave --force | ã¹ã¿ãã¯ãåé€ã Swarm ãé¢è± | 
ðŒ é«åºŠãª Docker å©çš
ð ããåã Docker ã³ãã³ã
| ã³ãã³ã | äŸ | 説æ | 
|---|---|---|
| docker buildx | docker buildã眮ãæããé«åºŠãªã€ã¡ãŒãžãã«ãããŒã«ããã«ããã©ãããã©ãŒã ããã£ãã·ã¥ã䞊åãã«ããããŸããŸãªåœ¢åŒãžã®ãšã¯ã¹ããŒãããµããŒããCI/CD ãã¯ãã¹ãã©ãããã©ãŒã éçºã«æçš | |
| docker buildx build --platform linux/arm64,linux/amd64 -t myimg:multi . | ãã«ããã©ãããã©ãŒã (ARM ãš x86 ãåæ) ã®ã€ã¡ãŒãžããã«ã | |
| docker buildx build --load -t localimg . | ã€ã¡ãŒãžããã«ãããŠããŒã«ã« Docker Engine ãã£ãã·ã¥ã«ããŒã | |
| docker buildx build --push --platform linux/amd64,linux/arm64 -t repo/app:latest . | ãã«ããã©ãããã©ãŒã ã€ã¡ãŒãžããã«ãããŠã¬ãžã¹ããªã«ããã·ã¥ | |
| docker context | ãªã¢ãŒããè€æ°ç°å¢ã§äœæ¥ããããã® Docker ã³ã³ããã¹ãã管çãããŒã«ã«ãšãªã¢ãŒãéãçŽ æ©ãåãæ¿ãå¯èœ | |
| docker context create myremote --docker "host=ssh://user@host" | ãªã¢ãŒããã¹ãæ¥ç¶çšã³ã³ããã¹ããäœæ | |
| docker context use myremote | ãªã¢ãŒãã³ã³ããã¹ãã«åãæ¿ã | |
| docker context ls | å©çšå¯èœãªã³ã³ããã¹ããšã¢ã¯ãã£ããªãã®ãäžèŠ§è¡šç€º | |
| docker system events | Docker ã€ãã³ãããªã¢ã«ã¿ã€ã ã§ç£èŠãã€ãã³ãã¿ã€ã (äŸ: ã³ã³ããéå§) ã§ãã£ã«ã¿å¯èœãç£èŠãèªååã«äŸ¿å© | |
| docker events --filter 'event=start' | ã³ã³ããéå§ã€ãã³ãã®ã¿è¡šç€º | |
| docker events --since 1h --until 10m | çŽè¿1æéãã10ååãŸã§ã®ã€ãã³ãã衚瀺 | |
| docker events --filter 'type=network' | ãããã¯ãŒã¯é¢é£ã€ãã³ãã®ã¿è¡šç€º | |
| docker events --filter 'image=nginx' | 
 | |
| docker container update | åèµ·åããã«å®è¡äžã³ã³ããã®ãªãœãŒã¹å¶éãèšå®ãå€æŽ | |
| docker update --cpus 2 --memory 1g my_container | 2 CPU ãš 1 GB RAM ã«å¶é | |
| docker update --restart unless-stopped my_container | èªååèµ·åããªã·ãŒã  | |
| docker update --pids-limit 200 my_container | ããã»ã¹æ°ã 200 ã«å¶é | |
| docker container diff | ã³ã³ããã®ãã¡ã€ã«ã·ã¹ãã 倿Žãå ã€ã¡ãŒãžãšæ¯èŒããããã°ãç£æ»ã«æçš | |
| docker diff my_container | ã³ã³ããå ã®ãã¹ãŠã®å€æŽã衚瀺 | |
| docker diff my_container | grep '^A' | 远å ããããã¡ã€ã« ( | |
| docker image history | ã€ã¡ãŒãžã¬ã€ã€ãŒã®å±¥æŽã衚瀺: ãã«ãã³ãã³ãããµã€ãºãäœææéãæé©åãç£æ»ã«æçš | |
| docker history my_image | ã€ã¡ãŒãžã®ã¬ã€ã€ãŒå±¥æŽã衚瀺 | |
| docker history --no-trunc my_image | çç¥ããã«å®å šãªãã«ãã³ãã³ãã衚瀺 | |
| docker history --format "{{.CreatedBy}}: {{.Size}}" my_image | ãã«ãã³ãã³ããšã¬ã€ã€ãŒãµã€ãºã®ã¿ãåºå | 
ð Docker 掻çšãã¹ããã©ã¯ãã£ã¹ãšèªåå
- ã€ã¡ãŒãžãµã€ãºãæå°å 
 - alpineã- scratchã®ãããªè»œéããŒã¹ã€ã¡ãŒãžã䜿çš
 ã¬ã€ã€ãŒããŸãšããã«ã¯- --squashãäœ¿çš (å®éšçæ©èœèŠæå¹å)
 äžæãã¡ã€ã«ããã£ãã·ã¥ãåäžã¬ã€ã€ãŒã§åé€:- RUN apk add --no-cache curl && rm -rf /var/cache/apk/*
- ã¬ã€ã€ãŒæ°ãæå°å 
 - RUNããŸãšããŠæçµã€ã¡ãŒãžã®ã¬ã€ã€ãŒæ°ãåæž:- RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
- Dockerfile ãã«ããæé©å 
 ãã«ãã¹ããŒãžãã«ããå©çšããæçµã€ã¡ãŒãžã«ã¯å¿ èŠãªãã¡ã€ã«ã®ã¿æ®ã
 äŸåé¢ä¿ãå ã«ã³ããŒã»ã€ã³ã¹ããŒã«ãããã®åŸã³ãŒããã³ã㌠â ã¬ã€ã€ãŒãã£ãã·ã¥ãå¹çåããã«ããéããªã
- ã·ãŒã¯ã¬ãããšèšå®ãåé¢ 
 ã€ã¡ãŒãžå ã«- .envãAPI ããŒãç§å¯èšŒææžãä¿åããªã
 èšå®ã«äœ¿çšãã:- docker secret(Swarm å )
 
- ç°å¢å€æ° (-e VAR=valueãŸãã¯.env)
 
- å€éšããªã¥ãŒã ã§èšå®ç®¡ç 
 
- ãã«ãæã·ãŒã¯ã¬ãã (BuildKit) 
 ãã«ãäžã«å®å šã«ã·ãŒã¯ã¬ãããæž¡ãã«ã¯- --secretãã©ã°ã䜿çš:- docker buildx build --secret id=mysecret,src=./secret.txt .- Dockerfile å ã§ã·ãŒã¯ã¬ãã㯠- /run/secrets/mysecretã«é 眮:- RUN --mount=type=secret,id=mysecret cat /run/secrets/mysecret- ð¡ ã·ãŒã¯ã¬ããã¯ã€ã¡ãŒãžã¬ã€ã€ãŒã«ä¿åãããªã 
- Rootless Docker 
 é root æš©éã§ Docker ãå®è¡ãããšã»ãã¥ãªãã£ãåäžãããã¹ã䟵害ãªã¹ã¯ãäœæž
 æå¹åããã«ã¯:- dockerd-rootless-setuptool.sh install export PATH=/usr/bin:$PATH- 確èª: - docker info | grep Rootless- â äžéšæ©èœ (ããŒã <1024 ã®è»¢éãªã©) ã¯å©çšäžå¯ 
- ã€ã¡ãŒãžã®è匱æ§ãã¹ãã£ã³ 
 çµã¿èŸŒã¿ããŒã«ã䜿çš:- docker scan my_image- ãŸãã¯æ°ãã CLI ã䜿çš: - docker scout cves my_image- ããŒã¹ã€ã¡ãŒãžãäŸåé¢ä¿ã®èåŒ±æ§æ€åºã«åœ¹ç«ã€ 
- ãªãœãŒã¹äœ¿çšãç£èŠ 
 ã¡ã¢ãªãCPUãããã»ã¹æ°ã§ã³ã³ãããå¶é:- docker run --memory=512m --cpus="1.5" --pids-limit=200 myimage- ãªãœãŒã¹éå°äœ¿çšãé²ã 
 I/O ãå¶éå¯èœ:- docker run --device-read-bps /dev/sda:1mb --device-write-bps /dev/sda:1mb myimage- ãã£ã¹ã¯ãµãã·ã¹ãã ãéè² è·ã«ããªãããã«æçš 
- èªåã¯ãªãŒã³ã¢ãã 
 æªäœ¿çšã€ã¡ãŒãžãã³ã³ãããããªã¥ãŒã ããããã¯ãŒã¯ã宿çã«åé€:- docker system prune -af --volumes- â æ³šæ: ãã®ã³ãã³ãã¯ãã¹ãŠã®æªäœ¿çšãªãœãŒã¹ãåé€ãã - éžæçã«ã¯ãªãŒã³ã¢ããããã«ã¯: - docker image prune --filter "until=24h"
- CI/CD 飿º 
 GitHub ActionsãGitLab CIãJenkins ãã€ãã©ã€ã³ã«ãã«ãã»ãã¹ãã»ãããã€ãçµã¿èŸŒã
 GitHub Actions ã¹ãããäŸ:- - run: docker build -t myapp:${GITHUB_SHA} . - run: docker push myapp:${GITHUB_SHA}
- ãã°ãšç£èŠ 
 ãã°ãã©ã€ã (- --log-driver) ã ELKãLokiãSplunk ãªã©ã®éäžç®¡çã·ã¹ãã ã«æ¥ç¶
 Prometheus + cAdvisor ã§ã³ã³ããã¡ããªã¯ã¹ãåé
- æ¬çªç°å¢ããã〠
 - docker-compose.override.ymlã§éçºãšæ¬çªã®èšå®ãåé¢
 é«å¯çšæ§ãšã¹ã±ãŒãªã³ã°ã«ã¯:- Docker Swarm
 
- Kubernetes 
 
- Docker Swarm
ð Docker ã³ã³ããã®ãããã°ãšãããã¡ã€ãªã³ã°
| ã³ãã³ã | äŸ | 説æ | 
|---|---|---|
| docker container exec | å®è¡äžã®ã³ã³ããå ã§ã³ãã³ããå®è¡ãã察話åã¢ã¯ã»ã¹ãã³ã³ããã®éé¢ç°å¢ã§ããã»ã¹ãå®è¡å¯èœã«ãã | |
| docker exec -it my_container bash | å®è¡äžã®ã³ã³ããå ã§å¯Ÿè©±åã¿ãŒããã« (bash) ãéå§ | |
| docker exec -it my_container sh | æå°éã®ã·ã§ã«ãéå§ (bash ãå©çšã§ããªãå Žå) | |
| docker exec my_container ls /app | 察話ã¢ãŒããªãã§ã³ãã³ããå®è¡ | |
| docker container logs | æå®ãããã³ã³ããã®ãã°ã衚瀺ããåäœã«é¢ããåºåãã€ãã³ãã蚺æã»ç£èŠ | |
| docker logs -f --tail 100 my_container | çŽè¿100è¡ã®ãã°ããªã¢ã«ã¿ã€ã ã§è¡šç€º | |
| docker logs my_container | ã³ã³ããã®ãã¹ãŠã®å©çšå¯èœãªãã°ã衚瀺 | |
| docker logs --since 1h my_container | çŽè¿1æéã®ãã°ã衚瀺 | |
| docker inspect | ã³ã³ãããã€ã¡ãŒãžããããã¯ãŒã¯ãªã©ã® Docker ãªããžã§ã¯ãã®è©³çްæ å ±ã JSON 圢åŒã§åºå (æ§æãšç¶æ ãå«ã) | |
| docker inspect my_container | ã³ã³ããã®å®å šãª JSON æ å ±ãååŸ | |
| docker inspect --format '{{.State.Pid}}' my_container | ãã¹ãäžã§ã³ã³ããã®ã¡ã€ã³ããã»ã¹ã® PID ãååŸ | |
| docker inspect --format '{{.NetworkSettings.IPAddress}}' my_container | ã³ã³ããã® IP ã¢ãã¬ã¹ã衚瀺 | |
| nsenter(withstrace) | Linux ãŠãŒãã£ãªãã£ã§ãå¥ã®ããã»ã¹ (ããã§ã¯ã³ã³ãã) ã®åå空éã«å
¥ãã straceãšäœµçšããŠã³ã³ããå
ã®ã·ã¹ãã ã³ãŒã«ã远跡å¯èœ | |
| nsenter --target $(docker inspect --format '{{.State.Pid}}' my_container) --mount --uts --ipc --net --pid strace -p 1 | ã³ã³ããã®åå空éã«å ¥ããããã»ã¹1ã®ã·ã¹ãã ã³ãŒã«ã远跡 | |
| nsenter --target $(docker inspect --format '{{.State.Pid}}' my_container) --mount --uts --ipc --net --pid bash | ã³ã³ããã®åå空éå ã§ bash ã·ã§ã«ãéã | |
| nsenter --target $(docker inspect --format '{{.State.Pid}}' my_container) --net netstat -tulnp | ã³ã³ããå ã®ãªãŒãã³ããŒãã衚瀺 | |
| tcpdump(inside container) | ãããã¯ãŒã¯ãã©ãã£ãã¯ããã£ããã£ã»è§£æããã³ã³ãœãŒã«ããŒã«ãã³ã³ããå ã§ãããã¯ãŒã¯åé¡ã®èšºæããã±ããè§£æãæ¥ç¶ç£èŠã«äœ¿çš | |
| docker exec -it my_container tcpdump -i any | ã³ã³ããå ã§ãããã¯ãŒã¯ãã©ãã£ãã¯ããã£ããã£ã»è§£æ | |
| docker exec -it my_container tcpdump -nn port 80 | ããŒã80ã®ãã©ãã£ãã¯ã®ã¿ããã£ãã㣠| |
| docker exec -it my_container tcpdump -w /tmp/dump.pcap | ãã©ãã£ãã¯ããã¡ã€ã«ã«ä¿åããŠåŸã§è§£æ | |
| docker container stats | ã³ã³ããã®çŸåšã®ãªãœãŒã¹äœ¿çšç¶æ³ (CPUãã¡ã¢ãªããããã¯ãŒã¯ããã£ã¹ã¯) ããªã¢ã«ã¿ã€ã ã§è¡šç€º | |
| docker stats my_container | ã³ã³ããã® CPUãã¡ã¢ãªããããã¯ãŒã¯ããã£ã¹ã¯äœ¿çšéããªã¢ã«ã¿ã€ã 衚瀺 | |
| docker stats | ãã¹ãŠã®ã³ã³ããã®çµ±èšã衚瀺 | |
| docker stats --no-stream | çµ±èšã1åã ãåºåããŠçµäº | |
| docker container top | ã³ã³ããå
ã§å®è¡äžã®ããã»ã¹äžèЧã衚瀺ãLinux ã® psã«äŒŒãŠãããã³ã³ããã®åäœåæã«å©çš | |
| docker top my_container | ã³ã³ããå ã§å®è¡äžã®ããã»ã¹ã衚瀺 | |
| docker top my_container aux | 
 | |
| docker top my_container -eo pid,cmd | PID ãšã³ãã³ãã®ã¿ã衚瀺 | |
| docker diff | ã³ã³ããã®ãã¡ã€ã«ã·ã¹ãã 倿ŽãããŒã¹ã€ã¡ãŒãžãšæ¯èŒãã远å ã»å€æŽã»åé€ããããã¡ã€ã«ã衚瀺 | |
| docker diff my_container | ã³ã³ããã®ãã¡ã€ã«ã·ã¹ãã 倿ŽãããŒã¹ã€ã¡ãŒãžãšæ¯èŒããŠè¡šç€º | |
| docker diff my_container | grep '^A' | 远å ããããã¡ã€ã« ( | |
| docker diff my_container | grep '^C' | 倿Žããããã¡ã€ã« ( | |
| docker cp | ã³ã³ãããšãã¹ãéã§ãã¡ã€ã«ããã£ã¬ã¯ããªãã³ããŒããããŒã¿äº€æãããã¯ã¢ãããå¯èœã«ãã | |
| â | â | â | 
| docker cp my_container:/path/to/file ./file | ã³ã³ãããããã¹ããžãã¡ã€ã«ãã³ã㌠| |
| docker cp ./config.yaml my_container:/app/config.yaml | ãã¹ãããã³ã³ãããžãã¡ã€ã«ãã³ã㌠| |
| docker cp my_container:/var/log/app.log - | tar x -O | grep "ERROR" | ãã°ãã¡ã€ã«ãã³ããŒã㊠âERRORâ è¡ã®ã¿ããã£ã«ã¿ãããã£ã¹ã¯ã«ä¿åãã衚瀺 | 
ð¡ é«åºŠãªãããã°ã«ã¯
nsenterãstraceãtcpdumpãgdbãªã©ã®äœã¬ãã«ããŒã«ãå©çšã§ããŸãã
ðŒ é«åºŠãª Docker Compose å©çš
ð ããåã Docker Compose ã³ãã³ã
| ã³ãã³ã | äŸ | 説æ | 
|---|---|---|
| docker compose up | docker-compose.ymlã«å®çŸ©ããããµãŒãã¹ãèµ·åããããã¯ã°ã©ãŠã³ãå®è¡ãå¯èœ | |
| docker compose up -d web db | 
 | |
| docker compose up --build | ãµãŒãã¹èµ·ååã«ã€ã¡ãŒãžãåãã«ã | |
| docker compose up --remove-orphans | çŸåšã® Compose ãã¡ã€ã«ã«å®çŸ©ãããŠããªãã³ã³ãããåé€ | |
| docker compose build | Compose ãã¡ã€ã«ã§å®çŸ©ããããµãŒãã¹ã€ã¡ãŒãžããã£ãã·ã¥å¶åŸ¡ã䞊ååŠçã§ãã«ã | |
| docker compose build --no-cache | ãã£ãã·ã¥ã䜿ããå®å šã«åãã«ã | |
| docker compose build --parallel | å šãµãŒãã¹ã䞊åãã«ãããŠé«éå | |
| docker compose build web | 
 | |
| docker compose pull | ãã¹ãŠãŸãã¯æå®ãµãŒãã¹ã®ææ°ã€ã¡ãŒãžãã¬ãžã¹ããªããååŸ | |
| docker compose pull | å šãµãŒãã¹ã®ã€ã¡ãŒãžãååŸ | |
| docker compose pull db | 
 | |
| docker compose pull --ignore-pull-failures | ååŸäžã®ãšã©ãŒãç¡èŠããŠç¶è¡ | |
| docker compose restart | ã³ã³ãããåäœæããã«ãµãŒãã¹ãåèµ·å | |
| docker compose restart | çŸåšã®ãããžã§ã¯ãã®å šãµãŒãã¹ãåèµ·å | |
| docker compose restart worker | 
 | |
| docker compose restart web db | è€æ°ãµãŒãã¹ãåæã«åèµ·å | |
| docker compose exec | å®è¡äžã®ãµãŒãã¹ã³ã³ããå ã§ã³ãã³ããå®è¡ (察話ã¢ãŒãå¯èœ) | |
| docker compose exec db psql -U user -d database | 
 | |
| docker compose exec web sh | 
 | |
| docker compose exec api curl http://localhost:8080 | 
 | |
| docker compose config | ãã¹ãŠã®ãã¡ã€ã«ãšç°å¢å€æ°ãèæ ®ããæçµ Compose èšå®ãåºå | |
| docker compose config | çµ±åãããæ§æã YAML 圢åŒã§è¡šç€º | |
| docker compose config --services | ãã¹ãŠã®ãµãŒãã¹ãäžèŠ§è¡šç€º | |
| docker compose config --environment | ãµãŒãã¹ã§äœ¿çšãããç°å¢å€æ°ããã¹ãŠè¡šç€º | |
| docker compose watch | ãœãŒã¹ãã¡ã€ã«å€æŽæã«ãµãŒãã¹ãèªååèµ·åãéçºã«äŸ¿å© | |
| docker compose watch | ãã¡ã€ã«ãç£èŠãã倿޿ã«ãµãŒãã¹ãåèµ·å | |
| docker compose events | Compose ã€ãã³ã (ãµãŒãã¹éå§ãåæ¢ãæŽæ°) ãã¹ããªãŒã 衚瀺 | |
| docker compose events --json | ã€ãã³ãã JSON 圢åŒã§åä¿¡ | |
| docker compose rm | 忢äžã®ãµãŒãã¹ã³ã³ãããåé€ | |
| docker compose rm web db | 
 | |
| docker compose pause | ãµãŒãã¹ãäžæåæ¢ | |
| docker compose pause api | 
 | |
| docker compose unpause | äžæåæ¢äžã®ãµãŒãã¹ãåé | |
| docker compose unpause api | 
 | |
| docker compose create | ã³ã³ãããèµ·åããã«äœæ | |
| docker compose create web db | 
 | |
| docker compose images | ãµãŒãã¹ã§äœ¿çšãããŠããã€ã¡ãŒãžã衚瀺 | |
| docker compose images | å šãµãŒãã¹ã®ã€ã¡ãŒãžã衚瀺 | |
| docker compose top | ãµãŒãã¹ã³ã³ããå ã§å®è¡äžã®ããã»ã¹ã衚瀺 | |
| docker compose top web | 
 | 
ð Docker Compose ã®äŸ¿å©ãªå®è·µãšèªåå
- ç°å¢ã®åé¢ 
 éçºã»ã¹ããŒãžã³ã°ã»æ¬çªç°å¢ããšã«- docker-compose.override.ymlãåããããšã§ãèšå®ã®è¡çªãé¿ãããã
 - -fãã©ã°ã§è€æ°ã®æ§æãã¡ã€ã«ãçµã¿åããå¯èœ:- docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d- ç°å¢å€æ°ç®¡çã«ã¯ - .env.devã- .env.prodãªã©ã®ç°ãªã- .envãã¡ã€ã«ã䜿çš
- ã·ãŒã¯ã¬ããã®å®å šãªä¿å 
 ãã¹ã¯ãŒããããŒã¯ã³ãªã©ã®æ©å¯ããŒã¿ã Compose ãã¡ã€ã«ã«çŽæ¥å«ããªãã代ããã«:- ç°å¢å€æ°çšã® .envãã¡ã€ã« (æå·åãããå ¬éãªããžããªã«ã¯ã³ãããçŠæ¢)
 
- Docker Swarm ã® docker secretãšdocker config
 
- ã·ãŒã¯ã¬ãããå«ãèšå®ãã¡ã€ã«ã®å€éšããªã¥ãŒã 
 
- å€éšã·ãŒã¯ã¬ãã管çã·ã¹ãã (äŸ: HashiCorp Vault, AWS Secrets Manager) 
 
- ç°å¢å€æ°çšã® 
- depends_onãš- healthcheckã«ããèµ·åé åº
 äŸåãµãŒãã¹ã®æºåå®äºãåŸ ã€ã«ã¯:- services: db: image: postgres healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s retries: 5 api: image: my_api depends_on: db: condition: service_healthy
- æŽæ°æã®ããŠã³ã¿ã€ã æå°å 
 ãµãŒãã¹ãæŽæ°ããåã«å®è¡:- docker compose pull && docker compose up -d --remove-orphans- -dã¯ããã¯ã°ã©ãŠã³ãå®è¡ã- --remove-orphansã¯æªå®çŸ©ã³ã³ãããåé€
 å€ãã³ã³ãããå®å šã«åæ¢ã»åé€ããå Žå:- docker compose down --remove-orphans- ããã«ãããæ°ããã€ã¡ãŒãžãèªã¿èŸŒã¿æªäœ¿çšã³ã³ãããé€å»ãã€ã€ããŠã³ã¿ã€ã ã鲿¢ 
- éçºçšããããªããŒã (ããªã¥ãŒã ) 
 ããŒã«ã«ãã£ã¬ã¯ããªã- volumesã§ã³ã³ããã«ããŠã³ãããã€ã¡ãŒãžåãã«ããªãã§ã³ãŒã倿Žã峿åæ
 Windows ã macOS ã§ã¯ãã¡ã€ã«æš©éããã£ãã·ã¥ã«ããããã©ãŒãã³ã¹åé¡ã«æ³šæ
- ããªã¥ãŒã ã䜿ããªãããããªããŒã (Compose 2.22+) - develop: watch: - path: ./src action: sync target: /app
- ãµãŒãã¹ã®éäžãã°ç®¡ç 
 ELK StackãLokiãPrometheusãFluentd ãªã©ã«ãã°ããªãã€ã¬ã¯ã
 Docker ãã°ãã©ã€ã (- --log-driver) ãå©çšããŠéäžåé
 Compose ã§ãã°ãã©ã€ããèšå®:- services: api: image: my_api logging: driver: "json-file" options: max-size: "10m" max-file: "3"
- èªåãµãŒãã¹åèµ·å 
 - docker-compose.ymlã«åèµ·åããªã·ãŒãèšå®:- restart: unless-stopped- ãã®ä»ã®ããªã·ãŒ: - noâ èªååèµ·åãªã (ããã©ã«ã)
 
- alwaysâ åžžã«åèµ·å
 
- on-failureâ ãšã©ãŒæã®ã¿åèµ·å (ãªãã©ã€åæ°æå®å¯)
 - æ¬çªã§ã¯ - unless-stoppedãæšå¥š
 é害ããã¹ãåèµ·ååŸãèªåå埩å¯èœ
- ãµãŒãã¹ãããã¡ã€ã« 
 ç¹å®ã°ã«ãŒãã®ãµãŒãã¹ã®ã¿ãå®è¡å¯èœ:- services: db: image: postgres profiles: ["backend"] web: image: nginx profiles: ["frontend"]- ããã³ããšã³ããããã¡ã€ã«ã®ã¿å®è¡: - docker compose --profile frontend up
ð Docker Compose ãµãŒãã¹ã®ãããã°ãšãããã¡ã€ãªã³ã°
| ã³ãã³ã | äŸ | 説æ | 
|---|---|---|
| docker compose exec | å®è¡äžã®ãµãŒãã¹ã³ã³ããå ã§ã³ãã³ããå®è¡ããã¢ã¯ã»ã¹ãããã»ã¹æäœãå¯èœã«ãã | |
| docker compose exec web sh | 
 | |
| docker compose exec db psql -U user -d database | 
 | |
| docker compose logs | ãµãŒãã¹ãã°ã衚瀺ã蚺æã»ç£èŠã«å©çš | |
| docker compose logs -f db | 
 | |
| docker compose logs --tail=50 api | 
 | |
| docker compose logs --since=1h web | 
 | |
| docker inspect | ãµãŒãã¹ãå®è¡äžã®ã³ã³ããã®è©³çްæ å ±ã衚瀺 | |
| docker inspect $(docker compose ps -q web) | 
 | |
| docker container stats | ãµãŒãã¹ã³ã³ããã®ãªãœãŒã¹äœ¿çšãç£èŠ | |
| docker stats $(docker compose ps -q worker) | 
 | |
| docker compose run --rm | äžæçãªãµãŒãã¹ã³ã³ãããå®è¡ããããã°ã«äŸ¿å© | |
| docker compose run --rm web sh | 
 | |
| docker container cp | ãã¹ããšã³ã³ããéã§ãã¡ã€ã«ãã³ã㌠| |
| docker cp $(docker compose ps -q db):/dump.sql ./dump.sql | 
 | 
ð¡ è€æ°ãµãŒãã¹æ§æã®ãããã°ã«ã¯
docker compose run --rmã䜿çšããå¿ èŠãªãããã¯ãŒã¯ãããªã¥ãŒã ä»ãã§åå¥ã³ã³ãããèµ·åå¯èœ (æ¬ãµãŒãã¹ã«åœ±é¿ãªã)ã
ð 远å ãªãœãŒã¹
ð« .dockerignore ã§ãã¡ã€ã«ãé€å€
ã€ã¡ãŒãžã«å«ããªããã¡ã€ã«ããã©ã«ãã .dockerignore ã«è¿œå ãããµã€ãºåæžãšãã«ãé«éåãå®çŸ:
node_modules/
*.log
.envâ¡ ãšã€ãªã¢ã¹ã§ã³ãã³ããç°¡ç¥å
ãã䜿ãã³ãã³ãã«ã¯ãšã€ãªã¢ã¹ãäœæããè¿ éã«å®è¡:
alias dcu="docker compose up -d"
alias dcd="docker compose down"
alias dcb="docker compose build"ð§ ãã³ã: Docker 掻çšã¢ããã€ã¹
- ãã¹ãŠãæèšããå¿
èŠã¯ãªã â docker --helpãŸãã¯docker <command> --helpãæŽ»çš
 
- æ¥åžžçã«ç·Žç¿ããç°¡åãªãããžã§ã¯ãã§è©Šã
 
- ã€ã¡ãŒãžãµã€ãºã«æ³šæããäžèŠãã¡ã€ã«ã¯ - .dockerignoreã§é€å€
ð 䟿å©ãªãªã³ã¯
ð å
¬åŒ Docker ããã¥ã¡ã³ã â Docker ã®å
æ¬çã¬ã€ããšãªãã¡ã¬ã³ã¹:
https://docs.docker.com/
ð Docker ããŒãã·ãŒã â å
¬åŒå®å
šçããŒãã·ãŒã:
https://dockerlabs.collabnix.com/docker/cheatsheet/
ð Docker Hub â ã€ã¡ãŒãžãšã¬ãžã¹ããª:
https://hub.docker.com/