ð³ 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 (with strace) |
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/