đŸŗ Docker

Multilingual DevOps cheat sheet: Linux, Docker, Git, Kubernetes, Helm, Terraform, practical scenarios & templates.
āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ

ā§Šā§§ āφāĻ—āĻ¸ā§āϟ, ⧍ā§Ļ⧍ā§Ģ

Docker āĻāĻ•āϟāĻŋ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ āϝāĻž āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϗ⧁āϞ⧋āϕ⧇ āφāϞāĻžāĻĻāĻž āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇ āϚāĻžāϞāĻžāϝāĻŧāĨ¤ āĻāχ āϚāĻŋāϟ āĻļā§€āĻŸā§‡ āχāĻŽā§‡āϜ, āĻ•āύāĻŸā§‡āχāύāĻžāϰ, āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ•, āĻ­āϞāĻŋāωāĻŽ, Docker Compose āĻāĻŦāĻ‚ Swarm āύāĻŋāϝāĻŧ⧇ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

đŸ“Ļ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• āĻ•āĻŽāĻžāĻ¨ā§āĻĄ

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ

āωāĻĻāĻžāĻšāϰāĻŖ

āĻŦāĻ°ā§āĻŖāύāĻž

docker āĻĒā§āϰāϧāĻžāύ Docker CLI āĻ•āĻŽāĻžāĻ¨ā§āĻĄ, āϝāĻž āĻĻāĻŋāϝāĻŧ⧇ āϏāĻžāĻŦāĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϚāĻžāϞāĻžāύ⧋ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻ•āύāĻŸā§‡āχāύāĻžāϰ, āχāĻŽā§‡āϜ, āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻ“ āĻ­āϞāĻŋāωāĻŽ āĻŽā§āϝāĻžāύ⧇āϜ āĻ•āϰāĻž āĻšāϝāĻŧ
docker version āχāĻ¨ā§āϏāϟāϞ āĻ•āϰāĻž Docker āĻ­āĻžāĻ°ā§āϏāύ (āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻ“ āϏāĻžāĻ°ā§āĻ­āĻžāϰ) āĻĻ⧇āĻ–āĻžāϝāĻŧāĨ¤ āχāĻ¨ā§āϏāϟāϞ⧇āĻļāύ āϝāĻžāϚāĻžāχāϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āωāĻĒāϝ⧋āĻ—ā§€
docker version --format '{{.Client.APIVersion}}'

āĻļ⧁āϧ⧁ Docker āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ API āĻ­āĻžāĻ°ā§āϏāύ āĻĻ⧇āĻ–āĻžāύ⧋

docker version --format '{{.Server.Version}}'

āĻļ⧁āϧ⧁ Docker āϏāĻžāĻ°ā§āĻ­āĻžāϰ (Engine) āĻ­āĻžāĻ°ā§āϏāύ āĻĻ⧇āĻ–āĻžāύ⧋

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 āϕ⧋āύ storage driver āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϛ⧇ āϤāĻž āĻĻ⧇āĻ–āĻžāύ⧋

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

āχāĻ¨ā§āϟāĻžāĻ°â€Œā§āϝāĻžāĻ•ā§āϟāĻŋāĻ­ Bash āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞāϏāĻš Ubuntu āϚāĻžāϞāĻžāύ⧋

docker run -d nginx

Nginx detached (āĻŦā§āϝāĻžāĻ•āĻ—ā§āϰāĻžāωāĻ¨ā§āĻĄ) āĻŽā§‹āĻĄā§‡ āϚāĻžāϞāĻžāύ⧋

docker run -p 8080:80 nginx

Nginx āϚāĻžāϞāĻŋāϝāĻŧ⧇ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻĒā§‹āĻ°ā§āϟ 80 āĻšā§‹āĻ¸ā§āĻŸā§‡āϰ āĻĒā§‹āĻ°ā§āϟ 8080-āĻ bind āĻ•āϰāĻž

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

āĻ•āύāĻŸā§‡āχāύāĻžāϰ āϚāĻžāϞ⧁ āĻ•āϰ⧇ āχāĻ¨ā§āϟāĻžāĻ°â€Œā§āϝāĻžāĻ•ā§āϟāĻŋāĻ­ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ attach āĻ•āϰāĻž

docker container stop āĻāĻ•āϟāĻŋ āϚāϞāĻŽāĻžāύ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻŦāĻ¨ā§āϧ āĻ•āϰāĻž
docker stop container_name

āύāĻžāĻŽ āĻĻāĻŋāϝāĻŧ⧇ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻŦāĻ¨ā§āϧ āĻ•āϰāĻž

docker stop $(docker ps -q)

āϏāĻŦ āϚāϞāĻŽāĻžāύ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻŦāĻ¨ā§āϧ āĻ•āϰāĻž

docker stop -t 5 container_name

āĻāĻ•āϟāĻŋ āĻ•āύāĻŸā§‡āχāύāĻžāϰ ā§Ģ āϏ⧇āϕ⧇āĻ¨ā§āĻĄ āϏāĻŽāϝāĻŧ āĻĻāĻŋāϝāĻŧ⧇ āĻŦāĻ¨ā§āϧ āĻ•āϰāĻž

docker container restart āĻāĻ•āϟāĻŋ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻĒ⧁āύāϰāĻžāϝāĻŧ āϚāĻžāϞ⧁ āĻ•āϰāĻž
docker restart container_name

āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ

docker restart $(docker ps -q)

āϏāĻŦ āϚāϞāĻŽāĻžāύ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ

docker restart -t 10 container_name

āĻāĻ•āϟāĻŋ āĻ•āύāĻŸā§‡āχāύāĻžāϰ ā§§ā§Ļ āϏ⧇āϕ⧇āĻ¨ā§āĻĄ āĻĻ⧇āϰāĻŋ āĻĻāĻŋāϝāĻŧ⧇ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ

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

test1 āϰ⧇āĻĒā§‹āϜāĻŋāϟāϰāĻŋāϰ latest āĻŸā§āϝāĻžāĻ—āϝ⧁āĻ•ā§āϤ āχāĻŽā§‡āϜ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž

docker rmi 1a2b3c4d5e6f

ID āĻĻāĻŋāϝāĻŧ⧇ āĻāĻ•āϟāĻŋ āχāĻŽā§‡āϜ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž

docker rmi $(docker images -q)

āϏāĻŦ āχāĻŽā§‡āϜ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž (āϏāϤāĻ°ā§āĻ•āϤāĻžāϰ āϏāĻžāĻĨ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ!)

🔁 āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻŽā§āϝāĻžāύ⧇āϜāĻŽā§‡āĻ¨ā§āϟ

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ

āωāĻĻāĻžāĻšāϰāĻŖ

āĻŦāĻ°ā§āĻŖāύāĻž

docker container exec āϚāϞāĻŽāĻžāύ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āϭ⧇āϤāϰ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϚāĻžāϞāĻžāύ⧋
docker exec -it container bash

container āύāĻžāĻŽā§‡āϰ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇ āχāĻ¨ā§āϟāĻžāĻ°â€Œā§āϝāĻžāĻ•ā§āϟāĻŋāĻ­ bash āϚāĻžāϞāĻžāύ⧋

docker exec container ls /app

āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ /app āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ ls āϚāĻžāϞāĻžāύ⧋

docker exec -d container touch /tmp/testfile

āĻĄāĻŋāĻŸā§āϝāĻžāϚāĻĄ āĻŽā§‹āĻĄā§‡ (āĻ…āĻĒ⧇āĻ•ā§āώāĻž āĻ›āĻžāĻĄāĻŧāĻž) āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϚāĻžāϞāĻžāύ⧋

docker container logs āĻ•āύāĻŸā§‡āχāύāĻžāϰ āϞāĻ— āĻĻ⧇āĻ–āĻž
docker logs container

container āύāĻžāĻŽā§‡āϰ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āϏāĻŦ āϞāĻ— āĻĻ⧇āĻ–āĻžāύ⧋

docker logs -f container

āϰāĻŋāϝāĻŧ⧇āϞ-āϟāĻžāχāĻŽā§‡ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āϞāĻ— āĻĢāϞ⧋ āĻ•āϰāĻž

docker logs --tail 50 container

āĻļ⧇āώ ā§Ģā§Ļ āϞāĻžāχāύ āϞāĻ— āĻĻ⧇āĻ–āĻžāύ⧋

docker inspect āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻŦāĻž āχāĻŽā§‡āĻœā§‡āϰ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ JSON āϤāĻĨā§āϝ āĻĒāĻžāĻ“āϝāĻŧāĻž
docker inspect container

container āύāĻžāĻŽā§‡āϰ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āĻĻ⧇āĻ–āĻžāύ⧋

docker inspect --format '{{.NetworkSettings.IPAddress}}' container

āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ IP āĻ…ā§āϝāĻžāĻĄā§āϰ⧇āϏ āĻĻ⧇āĻ–āĻžāύ⧋

docker container stats āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āϰāĻŋāϝāĻŧ⧇āϞ-āϟāĻžāχāĻŽ āϰāĻŋāϏ⧋āĻ°ā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ¸ā§āϟāĻŋāĻ• āĻĻ⧇āĻ–āĻžāύ⧋
docker stats

āϏāĻŦ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ CPU, āĻŽā§‡āĻŽāϰāĻŋ, āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻ“ āĻĄāĻŋāĻ¸ā§āĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻĻ⧇āĻ–āĻžāύ⧋

docker stats container_name

āĻļ⧁āϧ⧁ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻāĻ•āϟāĻŋ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻ¸ā§āĻŸā§āϝāĻžāϟ āĻĻ⧇āĻ–āĻžāύ⧋

docker stats --no-stream

āĻāĻ•āĻŦāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ snapshot āφāωāϟāĻĒ⧁āϟ āĻĻ⧇āĻ–āĻžāύ⧋

docker container rename āĻāĻ•āϟāĻŋ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ
docker rename old_name new_name

āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āύāĻžāĻŽ 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

container āύāĻžāĻŽā§‡āϰ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻĒā§āϰāϏ⧇āϏ āĻĻ⧇āĻ–āĻžāύ⧋

docker container pause āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āϏāĻŦ āĻĒā§āϰāϏ⧇āϏ pause āĻ•āϰāĻž
docker pause container

container āύāĻžāĻŽā§‡āϰ āĻ•āύāĻŸā§‡āχāύāĻžāϰ pause āĻ•āϰāĻž

docker container unpause pause āĻ•āϰāĻž āĻ•āύāĻŸā§‡āχāύāĻžāϰ resume āĻ•āϰāĻž
docker unpause container

container āύāĻžāĻŽā§‡āϰ āĻ•āύāĻŸā§‡āχāύāĻžāϰ resume āĻ•āϰāĻž

docker container update āĻ•āύāĻŸā§‡āχāύāĻžāϰ āϏ⧇āϟāĻŋāĻ‚āϏ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ āĻ›āĻžāĻĄāĻŧāĻž āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž
docker update --memory 500m container

āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻŽā§‡āĻŽāϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ 500 MB-āϤ⧇ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧ āĻ•āϰāĻž

🧱 āχāĻŽā§‡āϜ āĻ“ Dockerfile

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ

āωāĻĻāĻžāĻšāϰāĻŖ

āĻŦāĻ°ā§āĻŖāύāĻž

docker buildx build āĻāĻ•āϟāĻŋ Dockerfile āĻĨ⧇āϕ⧇ Docker āχāĻŽā§‡āϜ āϤ⧈āϰāĻŋ āĻ•āϰāĻž
docker build -t my_image .

āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āĻĨ⧇āϕ⧇ my_image āĻŸā§āϝāĻžāĻ—āϝ⧁āĻ•ā§āϤ āχāĻŽā§‡āϜ āϤ⧈āϰāĻŋ

docker build -t my_image:1.0 .

1.0 āĻŸā§āϝāĻžāĻ—āϏāĻš āχāĻŽā§‡āϜ āϤ⧈āϰāĻŋ

docker build --no-cache -t my_image .

āĻ•ā§āϝāĻžāĻļ āĻ›āĻžāĻĄāĻŧāĻž āύāϤ⧁āύ āχāĻŽā§‡āϜ āϤ⧈āϰāĻŋ

docker container commit āĻāĻ•āϟāĻŋ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻĨ⧇āϕ⧇ āχāĻŽā§‡āϜ āϤ⧈āϰāĻŋ
docker commit container my_img:v1

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

āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ myrepo āϤ⧇ push āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŸā§āϝāĻžāĻ— āϝ⧋āĻ— āĻ•āϰāĻž

docker tag my_image:1.0 my_image:stable

1.0 āĻŸā§āϝāĻžāĻ—āϝ⧁āĻ•ā§āϤ āχāĻŽā§‡āĻœā§‡āϰ āϜāĻ¨ā§āϝ stable āĻŸā§āϝāĻžāĻ— āϤ⧈āϰāĻŋ

docker tag my_image my_image:backup

āϞ⧋āĻ•āĻžāϞ āχāĻŽā§‡āĻœā§‡ backup āĻŸā§āϝāĻžāĻ— āϝ⧋āĻ— āĻ•āϰāĻž

docker image push āχāĻŽā§‡āϜ Docker Hub āĻŦāĻž āĻ…āĻ¨ā§āϝ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋāϤ⧇ push āĻ•āϰāĻž
docker push myrepo/my_image:latest

myrepo āϰ⧇āĻĒā§‹āϜāĻŋāϟāϰāĻŋāϤ⧇ latest āĻŸā§āϝāĻžāĻ—āϝ⧁āĻ•ā§āϤ āχāĻŽā§‡āϜ push

docker push myrepo/my_image:1.0

1.0 āĻŸā§āϝāĻžāĻ—āϝ⧁āĻ•ā§āϤ āχāĻŽā§‡āϜ push

docker push myrepo/my_image

āĻĄāĻŋāĻĢāĻ˛ā§āϟ latest āĻŸā§āϝāĻžāĻ—āϏāĻš āχāĻŽā§‡āϜ push

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

āĻĒā§āϰāϤāĻŋ ā§Šā§Ļ āϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻ…ā§āϝāĻžāϭ⧇āχāϞ⧇āĻŦāϞāĻŋāϟāĻŋ āϝāĻžāϚāĻžāχāϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ healthcheck āϝ⧋āĻ— āĻ•āϰāĻž

docker inspect --format='{{json .State.Health}}' container_name

āϚāϞāĻŽāĻžāύ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ healthcheck āĻ¸ā§āĻŸā§āϝāĻžāϟāĻžāϏ āĻĻ⧇āĻ–āĻž

🔌 āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻ“ āĻ­āϞāĻŋāωāĻŽ

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ

āωāĻĻāĻžāĻšāϰāĻŖ

āĻŦāĻ°ā§āĻŖāύāĻž

docker network ls āϏāĻŦ Docker āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āϤāĻžāϞāĻŋāĻ•āĻž
docker network ls

āϤ⧈āϰāĻŋ āĻ•āϰāĻž āϏāĻŦ Docker āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻĻ⧇āĻ–āĻžāύ⧋

docker network ls --filter driver=bridge

bridge āĻĄā§āϰāĻžāχāĻ­āĻžāϰāϝ⧁āĻ•ā§āϤ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻĻ⧇āĻ–āĻžāύ⧋

docker network ls --format '{{.Name}}'

āĻļ⧁āϧ⧁ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āύāĻžāĻŽ āφāωāϟāĻĒ⧁āϟ āĻ•āϰāĻž

docker network create āĻāĻ•āϟāĻŋ āύāϤ⧁āύ Docker āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āϤ⧈āϰāĻŋ
docker network create my_net

my_net āύāĻžāĻŽā§‡āϰ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āϤ⧈āϰāĻŋ (āĻĄāĻŋāĻĢāĻ˛ā§āϟ āϏ⧇āϟāĻŋāĻ‚āϏ)

docker network create --driver bridge my_bridge_net

bridge āĻĄā§āϰāĻžāχāĻ­āĻžāϰāϏāĻš āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āϤ⧈āϰāĻŋ

docker network create --subnet=192.168.10.0/24 my_custom_net

āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ subnet āϏāĻš āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āϤ⧈āϰāĻŋ

docker network connect āĻāĻ•āϟāĻŋ āĻ•āύāĻŸā§‡āχāύāĻžāϰāϕ⧇ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž
docker network connect my_net container

container āϕ⧇ my_net āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž

docker network connect --alias db_net my_net container

db_net āĻāϞāĻŋāϝāĻŧāĻžāϏ āĻĻāĻŋāϝāĻŧ⧇ āϏāĻ‚āϝ⧋āĻ—

docker network disconnect āĻāĻ•āϟāĻŋ āĻ•āύāĻŸā§‡āχāύāĻžāϰāϕ⧇ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻĨ⧇āϕ⧇ āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āύ āĻ•āϰāĻž
docker network disconnect my_net container

container āϕ⧇ my_net āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻĨ⧇āϕ⧇ āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āύ āĻ•āϰāĻž

docker volume ls āϏāĻŦ Docker āĻ­āϞāĻŋāωāĻŽ āϤāĻžāϞāĻŋāĻ•āĻž
docker volume ls

āϏāĻŦ Docker āĻ­āϞāĻŋāωāĻŽ āĻĻ⧇āĻ–āĻžāύ⧋

docker volume ls --filter dangling=true

āĻ…āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻ­āϞāĻŋāωāĻŽ āĻĻ⧇āĻ–āĻžāύ⧋

docker volume create āĻāĻ•āϟāĻŋ āύāϤ⧁āύ Docker āĻ­āϞāĻŋāωāĻŽ āϤ⧈āϰāĻŋ
docker volume create my_vol

my_vol āύāĻžāĻŽā§‡āϰ āĻ­āϞāĻŋāωāĻŽ āϤ⧈āϰāĻŋ

docker volume create --driver local --opt type=tmpfs my_tmp_vol

tmpfs āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…āĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻ­āϞāĻŋāωāĻŽ āϤ⧈āϰāĻŋ

docker volume inspect āĻāĻ•āϟāĻŋ āĻ­āϞāĻŋāωāĻŽā§‡āϰ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āϤāĻĨā§āϝ āĻĻ⧇āĻ–āĻžāύ⧋
docker volume inspect my_vol

my_vol āĻ­āϞāĻŋāωāĻŽ JSON āĻĢāϰāĻŽā§āϝāĻžāĻŸā§‡ āĻĻ⧇āĻ–āĻžāύ⧋

docker volume rm āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāϧāĻŋāĻ• āĻ­āϞāĻŋāωāĻŽ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž
docker volume rm my_vol

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

āϏāĻžāĻ°ā§āĻ­āĻŋāϏāϗ⧁āϞ⧋ detached (āĻŦā§āϝāĻžāĻ•āĻ—ā§āϰāĻžāωāĻ¨ā§āĻĄ) āĻŽā§‹āĻĄā§‡ āϚāĻžāϞāĻžāύ⧋

docker compose up --build

āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϚāĻžāϞ⧁āϰ āφāϗ⧇ āχāĻŽā§‡āϜ 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

web āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āϞāĻ— āĻĻ⧇āĻ–āĻžāύ⧋

docker compose exec āϚāϞāĻŽāĻžāύ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āϭ⧇āϤāϰ⧇ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϚāĻžāϞāĻžāύ⧋
docker compose exec web bash

web āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇ āχāĻ¨ā§āϟāĻžāĻ°â€Œā§āϝāĻžāĻ•ā§āϟāĻŋāĻ­ bash āϚāĻžāϞāĻžāύ⧋

docker compose exec db ls /var/lib/postgresql

āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇ ls āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϚāĻžāϞāĻžāύ⧋

docker compose exec -d worker touch /tmp/done

worker āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇ āĻĄāĻŋāĻŸā§āϝāĻžāϚāĻĄ āĻŽā§‹āĻĄā§‡ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϚāĻžāϞāĻžāύ⧋

docker compose build āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āχāĻŽā§‡āϜ build āĻŦāĻž rebuild āĻ•āϰāĻž
docker compose build

docker-compose.yml āĻ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤ āϏāĻŦ āχāĻŽā§‡āϜ build

docker compose build web

āĻļ⧁āϧ⧁ web āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āχāĻŽā§‡āϜ build

docker compose build --no-cache

cache āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻ•āϰ⧇ āχāĻŽā§‡āϜ build

docker compose ps āϏāĻŦ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻ“ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻžāϏ āĻĻ⧇āĻ–āĻžāύ⧋
docker compose ps -a

āĻ¸ā§āϟāĻĒāĻĄāϏāĻš āϏāĻŦ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻĻ⧇āĻ–āĻžāύ⧋

docker compose ps --services

āĻļ⧁āϧ⧁ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āύāĻžāĻŽ āĻĻ⧇āĻ–āĻžāύ⧋

docker compose pull āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āĻĨ⧇āϕ⧇ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āχāĻŽā§‡āϜ āĻĄāĻžāωāύāϞ⧋āĻĄ/āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž
docker compose pull web

āĻļ⧁āϧ⧁ web āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āχāĻŽā§‡āϜ pull āĻ•āϰāĻž

docker compose pull --ignore-pull-failures

āĻ•āĻŋāϛ⧁ āχāĻŽā§‡āϜ āĻĢ⧇āϞ āĻ•āϰāϞ⧇āĻ“ pull āϚāĻžāϞāĻŋāϝāĻŧ⧇ āϝāĻžāĻ“āϝāĻŧāĻž

docker compose restart āϏāĻŦ āĻŦāĻž āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ āĻ•āϰāĻž
docker compose restart db

āĻļ⧁āϧ⧁ db āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ

docker compose restart -t 10

ā§§ā§Ļ āϏ⧇āϕ⧇āĻ¨ā§āĻĄ āϟāĻžāχāĻŽāφāωāϟ āĻĻāĻŋāϝāĻŧ⧇ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ

docker compose config āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āϤ Compose āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ YAML āĻĢāϰāĻŽā§āϝāĻžāĻŸā§‡ āĻĻ⧇āĻ–āĻžāύ⧋
docker compose config --services

āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ⧇ āϏāĻŦ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϤāĻžāϞāĻŋāĻ•āĻž

docker compose config --volumes

āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ⧇ āϏāĻŦ āĻ­āϞāĻŋāωāĻŽ āϤāĻžāϞāĻŋāĻ•āĻž

docker compose start āĻ¸ā§āϟāĻĒāĻĄ āϏāĻžāĻ°ā§āĻ­āĻŋāϏāϗ⧁āϞ⧋ āĻ•āύāĻŸā§‡āχāύāĻžāϰ recreate āύāĻž āĻ•āϰ⧇ āϚāĻžāϞāĻžāύ⧋
docker compose start web

web āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϚāĻžāϞāĻžāύ⧋

docker compose start db api

āĻāĻ•āϏāĻžāĻĨ⧇ āĻāĻ•āĻžāϧāĻŋāĻ• āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϚāĻžāϞāĻžāύ⧋

docker compose stop āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻŦāĻ¨ā§āϧ āĻ•āϰāĻž āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āύāĻž āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž
docker compose stop web

web āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻŦāĻ¨ā§āϧ āĻ•āϰāĻž

docker compose stop -t 5

ā§Ģ āϏ⧇āϕ⧇āĻ¨ā§āĻĄ āϟāĻžāχāĻŽāφāωāϟ āĻĻāĻŋāϝāĻŧ⧇ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻŦāĻ¨ā§āϧ āĻ•āϰāĻž

📤 āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ āĻ“ āχāĻŽāĻĒā§‹āĻ°ā§āϟ

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ

āωāĻĻāĻžāĻšāϰāĻŖ

āĻŦāĻ°ā§āĻŖāύāĻž

docker image save āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāϧāĻŋāĻ• 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 āχāĻŽā§‡āϜ āϞ⧋āĻĄ

docker load --input redis_latest.tar

āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻĻāĻŋāϝāĻŧ⧇ āĻĢāĻžāχāϞ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇ āχāĻŽā§‡āϜ āϞ⧋āĻĄ

docker load --quiet < my_image.tar

progress āφāωāϟāĻĒ⧁āϟ āĻ›āĻžāĻĄāĻŧāĻž āχāĻŽā§‡āϜ āϞ⧋āĻĄ

docker container export āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻĢāĻžāχāϞāϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ tar āφāĻ°ā§āĻ•āĻžāχāϭ⧇ āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ (image history āĻŦāĻž metadata āĻ›āĻžāĻĄāĻŧāĻž)
docker export container > file.tar

āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻĢāĻžāχāϞāϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āφāĻ°ā§āĻ•āĻžāχāϭ⧇ āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ

docker export my_container > my_container_fs.tar

āύāĻžāĻŽā§‡āϰ āĻĻā§āĻŦāĻžāϰāĻž āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ

docker export -o container_fs.tar container_id

-o āĻĢā§āĻ˛ā§āϝāĻžāĻ— āĻĻāĻŋāϝāĻŧ⧇ 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

stdin āĻĨ⧇āϕ⧇ āχāĻŽāĻĒā§‹āĻ°ā§āϟ

🧹 āĻ•ā§āϞāĻŋāύāφāĻĒ āĻ“ āĻĄāĻžāϝāĻŧāĻžāĻ—āύāĻ¸ā§āϟāĻŋāĻ•

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ

āωāĻĻāĻžāĻšāϰāĻŖ

āĻŦāĻ°ā§āĻŖāύāĻž

docker system df Docker āĻĄāĻŋāĻ¸ā§āĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻĻ⧇āĻ–āĻžāύ⧋: āĻ­āϞāĻŋāωāĻŽ, āχāĻŽā§‡āϜ, āĻ•āύāĻŸā§‡āχāύāĻžāϰ, build cache
docker system df -v

āĻĒā§āϰāϤāĻŋāϟāĻŋ āχāĻŽā§‡āϜ, āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻ“ āĻ­āϞāĻŋāωāĻŽā§‡āϰ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āφāωāϟāĻĒ⧁āϟ

docker system df --format '{{json .}}'

JSON āĻĢāϰāĻŽā§āϝāĻžāĻŸā§‡ āφāωāϟāĻĒ⧁āϟ āϤāĻĨā§āϝ

docker system prune āϏāĻŦ āĻ…āĻŦā§āϝāĻŦāĻšā§ƒāϤ Docker āĻĄā§‡āϟāĻž āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž: āĻ¸ā§āϟāĻĒāĻĄ āĻ•āύāĻŸā§‡āχāύāĻžāϰ, āĻ…āĻŦā§āϝāĻŦāĻšā§ƒāϤ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ•, dangling āχāĻŽā§‡āϜ āĻ“ build cache
docker system prune -a

āĻ…āĻŦā§āϝāĻŦāĻšā§ƒāϤ āχāĻŽā§‡āϜāϏāĻš āĻŽāĻ§ā§āϝāĻŦāĻ°ā§āϤ⧀ āχāĻŽā§‡āϜāĻ“ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž

docker system prune --volumes

āĻ…āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻ­āϞāĻŋāωāĻŽ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āϰāĻŋāϏ⧋āĻ°ā§āϏāϏāĻš āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž

docker image prune āĻ…āĻŦā§āϝāĻŦāĻšā§ƒāϤ Docker āχāĻŽā§‡āϜ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž, dangling āϞ⧇āϝāĻŧāĻžāϰāϏāĻš
docker image prune -a

āϏāĻŦ āĻ…āĻŦā§āϝāĻŦāĻšā§ƒāϤ āχāĻŽā§‡āϜ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž

docker image prune --filter "until=24h"

⧍ā§Ē āϘāĻŖā§āϟāĻžāϰ āĻŦ⧇āĻļāĻŋ āĻĒ⧁āϰāĻžāύ⧋ āχāĻŽā§‡āϜ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž

docker container prune āĻ¸ā§āϟāĻĒāĻĄ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž (āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻĻāĻŋāϝāĻŧ⧇ āĻŦāĻž āϏāĻŦ)
docker container prune --filter "until=24h"

⧍ā§Ē āϘāĻŖā§āϟāĻžāϰ āĻŦ⧇āĻļāĻŋ āĻĒ⧁āϰāĻžāύ⧋ āĻ¸ā§āϟāĻĒāĻĄ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž

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

āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ listen port āĻĻāĻŋāϝāĻŧ⧇ āχāύāĻŋāĻļāĻŋāϝāĻŧāĻžāϞāĻžāχāϜ

docker service create Swarm āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āύāϤ⧁āύ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϤ⧈āϰāĻŋ
docker service create --name nginx nginx

Swarm-āĻ Nginx āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϤ⧈āϰāĻŋ

docker service create --replicas 3 --name web webserver

ā§ŠāϟāĻŋ āϰāĻŋāĻĒā§āϞāĻŋāĻ•āĻž āϏāĻš āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϤ⧈āϰāĻŋ

docker service create --name redis --publish 6379:6379 redis

port mapping āϏāĻš āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϤ⧈āϰāĻŋ

docker stack deploy Compose āĻĢāĻžāχāϞ⧇āϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ Swarm āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ stack āĻĄā§‡āĻĒā§āϞāϝāĻŧ āĻ•āϰāĻž
docker stack deploy -c docker-compose.yml mystack

compose āĻĢāĻžāχāϞ āĻĨ⧇āϕ⧇ stack āĻĄā§‡āĻĒā§āϞāϝāĻŧ

docker stack deploy --with-registry-auth -c compose.yml mystack

registry authentication forwarding āϏāĻš āĻĄā§‡āĻĒā§āϞāϝāĻŧ

docker stack deploy -c swarm-compose.yml mystack

āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ compose āĻĢāĻžāχāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ stack āĻĄā§‡āĻĒā§āϞāϝāĻŧ

docker stack rm Swarm āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻĨ⧇āϕ⧇ āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāϧāĻŋāĻ• stack āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž
docker stack rm mystack

mystack stack āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž

docker stack rm

āϏāĻŦ stack āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž (āϏ⧁āĻĒāĻžāϰāĻŋāĻļāĻ•ā§ƒāϤ āύāϝāĻŧ)

docker stack rm mystack && docker swarm leave --force

stack āĻŽā§āϛ⧇ āĻĢ⧇āϞ⧇ Swarm āϛ⧇āĻĄāĻŧ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻž

đŸ’ŧ āωāĻ¨ā§āύāϤ Docker āĻŦā§āϝāĻŦāĻšāĻžāϰ

🚀 āĻĒ⧇āĻļāĻžāĻĻāĻžāϰ Docker āĻ•āĻŽāĻžāĻ¨ā§āĻĄ

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ

āωāĻĻāĻžāĻšāϰāĻŖ

āĻŦāĻ°ā§āĻŖāύāĻž

docker buildx āωāĻ¨ā§āύāϤ āχāĻŽā§‡āϜ build āϟ⧁āϞ, docker build-āĻāϰ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĨ¤ āĻŽāĻžāĻ˛ā§āϟāĻŋ-āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ, caching, parallel build āĻ“ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĢāϰāĻŽā§āϝāĻžāĻŸā§‡ āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ•āϰ⧇āĨ¤ CI/CD āĻ“ cross-platform āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āĻŸā§‡ āωāĻĒāϝ⧋āĻ—ā§€
docker buildx build --platform linux/arm64,linux/amd64 -t myimg:multi .

āĻāĻ•āϏāĻžāĻĨ⧇ ARM āĻ“ x86 āĻŽāĻžāĻ˛ā§āϟāĻŋ-āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ āχāĻŽā§‡āϜ build

docker buildx build --load -t localimg .

āχāĻŽā§‡āϜ build āĻ•āϰ⧇ āϞ⧋āĻ•āĻžāϞ Docker Engine cache-āĻ āϞ⧋āĻĄ

docker buildx build --push --platform linux/amd64,linux/arm64 -t repo/app:latest .

āĻŽāĻžāĻ˛ā§āϟāĻŋ-āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ āχāĻŽā§‡āϜ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋāϤ⧇ build āĻ“ push

docker context āϞ⧋āĻ•āĻžāϞ āĻ“ āϰāĻŋāĻŽā§‹āϟ environment-āĻ āĻĻā§āϰ⧁āϤ āϏ⧁āχāĻšā§‡āϰ āϜāĻ¨ā§āϝ Docker context āĻŽā§āϝāĻžāύ⧇āϜ āĻ•āϰāĻž
docker context create myremote --docker "host=ssh://user@host"

āϰāĻŋāĻŽā§‹āϟ Docker host āĻ āϏāĻ‚āϝ⧋āϗ⧇āϰ āϜāĻ¨ā§āϝ context āϤ⧈āϰāĻŋ

docker context use myremote

āϰāĻŋāĻŽā§‹āϟ context āĻ āϏ⧁āχāϚ

docker context ls

āĻ…ā§āϝāĻžāĻ•ā§āϟāĻŋāĻ­ context āϏāĻš āϏāĻŦ context āϤāĻžāϞāĻŋāĻ•āĻž

docker system events Docker event āϰāĻŋāϝāĻŧ⧇āϞ āϟāĻžāχāĻŽā§‡ āĻļā§‹āύāĻž (event āϟāĻžāχāĻĒ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āϝ⧇āĻŽāύ container start)āĨ¤ āĻŽāύāĻŋāϟāϰāĻŋāĻ‚ āĻ“ āĻ…āĻŸā§‹āĻŽā§‡āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āωāĻĒāϝ⧋āĻ—ā§€
docker events --filter 'event=start'

āĻļ⧁āϧ⧁ container start event āĻĻ⧇āĻ–āĻžāύ⧋

docker events --since 1h --until 10m

āĻ—āϤ āĻāĻ• āϘāĻŖā§āϟāĻžāϰ event āĻĨ⧇āϕ⧇ ā§§ā§Ļ āĻŽāĻŋāύāĻŋāϟ āφāĻ— āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻĻ⧇āĻ–āĻžāύ⧋

docker events --filter 'type=network'

āĻļ⧁āϧ⧁ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ event āĻĻ⧇āĻ–āĻžāύ⧋

docker events --filter 'image=nginx'

nginx āχāĻŽā§‡āϜ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ event āĻĻ⧇āĻ–āĻžāύ⧋

docker container update āϚāϞāĻŽāĻžāύ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āϰāĻŋāϏ⧋āĻ°ā§āϏ āϞāĻŋāĻŽāĻŋāϟ/āϏ⧇āϟāĻŋāĻ‚āϏ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ āĻ›āĻžāĻĄāĻŧāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž
docker update --cpus 2 --memory 1g my_container

⧍ CPU āĻ“ 1 GB RAM āϞāĻŋāĻŽāĻŋāϟ āϏ⧇āϟ āĻ•āϰāĻž

docker update --restart unless-stopped my_container

auto-restart āĻĒāϞāĻŋāϏāĻŋ unless-stopped āĻ āϏ⧇āϟ āĻ•āϰāĻž

docker update --pids-limit 200 my_container

āĻĒā§āϰāϏ⧇āϏ āϏāĻ‚āĻ–ā§āϝāĻž ⧍ā§Ļā§Ļ āϤ⧇ āϏ⧀āĻŽāĻŋāϤ āĻ•āϰāĻž

docker container diff āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻ“ āĻŽā§‚āϞ āχāĻŽā§‡āĻœā§‡āϰ āĻŽāĻ§ā§āϝ⧇ āĻĢāĻžāχāϞāϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻĻ⧇āĻ–āĻžāύ⧋āĨ¤ āĻĄāĻŋāĻŦāĻžāĻ—āĻŋāĻ‚ āĻ“ āĻ…āĻĄāĻŋāϟāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āωāĻĒāϝ⧋āĻ—ā§€
docker diff my_container

āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇ āϏāĻŦ āĻĢāĻžāχāϞāϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻĻ⧇āĻ–āĻžāύ⧋

docker diff my_container | grep '^A'

āĻļ⧁āϧ⧁ āύāϤ⧁āύ āĻĢāĻžāχāϞ (A — Added) āĻĻ⧇āĻ–āĻžāύ⧋

docker image history āχāĻŽā§‡āϜ āϞ⧇āϝāĻŧāĻžāϰ⧇āϰ āχāϤāĻŋāĻšāĻžāϏ āĻĻ⧇āĻ–āĻžāύ⧋: build āĻ•āĻŽāĻžāĻ¨ā§āĻĄ, āĻĒā§āϰāϤāĻŋāϟāĻŋ āϞ⧇āϝāĻŧāĻžāϰ⧇āϰ āϏāĻžāχāϜ āĻ“ āϤ⧈āϰāĻŋāϰ āϏāĻŽāϝāĻŧāĨ¤ āĻ…āĻĒā§āϟāĻŋāĻŽāĻžāχāĻœā§‡āĻļāύ āĻ“ āĻ…āĻĄāĻŋāϟāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āωāĻĒāϝ⧋āĻ—ā§€
docker history my_image

āĻāĻ•āϟāĻŋ āχāĻŽā§‡āĻœā§‡āϰ āϞ⧇āϝāĻŧāĻžāϰ āχāϤāĻŋāĻšāĻžāϏ āĻĻ⧇āĻ–āĻžāύ⧋

docker history --no-trunc my_image

āĻĒ⧁āϰ⧋ build āĻ•āĻŽāĻžāĻ¨ā§āĻĄ truncation āĻ›āĻžāĻĄāĻŧāĻž āĻĻ⧇āĻ–āĻžāύ⧋

docker history --format "{{.CreatedBy}}: {{.Size}}" my_image

āĻļ⧁āϧ⧁ build āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ“ āϞ⧇āϝāĻŧāĻžāϰ āϏāĻžāχāϜ āφāωāϟāĻĒ⧁āϟ āĻ•āϰāĻž

🛠 āωāĻĒāϝ⧋āĻ—ā§€ Docker āĻĒā§āĻ°ā§āϝāĻžāĻ•āϟāĻŋāϏ āĻ“ āĻ…āĻŸā§‹āĻŽā§‡āĻļāύ

  • āχāĻŽā§‡āϜ āϏāĻžāχāϜ āĻ•āĻŽāĻžāύ⧋
    āϛ⧋āϟ āϏāĻžāχāĻœā§‡āϰ āϜāĻ¨ā§āϝ alpine āĻŦāĻž scratch āĻŦ⧇āϏ āχāĻŽā§‡āϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤
    āϞ⧇āϝāĻŧāĻžāϰ squash āĻ•āϰāϤ⧇ --squash āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ (experimental āĻĢāĻŋāϚāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ)āĨ¤
    āĻāĻ•āχ āϞ⧇āϝāĻŧāĻžāϰ⧇ āĻŸā§‡āĻŽā§āĻĒ āĻĢāĻžāχāϞ āĻ“ cache āĻŽā§āϛ⧇ āĻĢ⧇āϞ⧁āύ:

    RUN apk add --no-cache curl && rm -rf /var/cache/apk/*
  • āϞ⧇āϝāĻŧāĻžāϰ āϏāĻ‚āĻ–ā§āϝāĻž āĻ•āĻŽāĻžāύ⧋
    āĻāĻ•āϟāĻŋ RUN āĻ āĻāĻ•āĻžāϧāĻŋāĻ• āĻ•āĻŽāĻžāĻ¨ā§āĻĄ combine āĻ•āϰ⧁āύ āϞ⧇āϝāĻŧāĻžāϰ āĻ“ āχāĻŽā§‡āϜ āϏāĻžāχāϜ āĻ•āĻŽāĻžāϤ⧇:

    RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
  • Dockerfile build āĻ…āĻĒā§āϟāĻŋāĻŽāĻžāχāϜ āĻ•āϰāĻž
    multi-stage build āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ āĻĢāĻžāχāύāĻžāϞ āχāĻŽā§‡āĻœā§‡ āĻļ⧁āϧ⧁ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻĢāĻžāχāϞ āĻĨāĻžāϕ⧇āĨ¤
    āĻĒā§āϰāĻĨāĻŽā§‡ dependency āĻ•āĻĒāĻŋ āĻ“ āχāĻ¨ā§āϏāϟāϞ āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ āϕ⧋āĻĄ āĻ•āĻĒāĻŋ — āĻāϤ⧇ layer caching āĻ­āĻžāϞ⧋ āĻšāϝāĻŧāĨ¤

  • āϏāĻŋāĻ•ā§āϰ⧇āϟ āĻ“ āĻ•āύāĻĢāĻŋāĻ— āφāϞāĻžāĻĻāĻž āϰāĻžāĻ–āĻž
    .env, API key āĻŦāĻž āĻĒā§āϰāĻžāχāϭ⧇āϟ āϏāĻžāĻ°ā§āϟāĻŋāĻĢāĻŋāϕ⧇āϟ āχāĻŽā§‡āĻœā§‡ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻŦ⧇āύ āύāĻžāĨ¤
    āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ:

    • docker secret (Swarm-āĻ)
    • environment variable (-e VAR=value āĻŦāĻž .env)
    • config āĻāϰ āϜāĻ¨ā§āϝ external volume

  • Build-time secret (BuildKit)
    build āϚāϞāĻžāĻ•āĻžāϞ⧇ secret āύāĻŋāϰāĻžāĻĒāĻĻ⧇ āĻĒāĻžāϏ āĻ•āϰāϤ⧇ --secret āĻĢā§āĻ˛ā§āϝāĻžāĻ— āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ:

    docker buildx build --secret id=mysecret,src=./secret.txt .

    Dockerfile-āĻ secret /run/secrets/mysecret āĻ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻŦ⧇:

    RUN --mount=type=secret,id=mysecret cat /run/secrets/mysecret

    🛡 āĻāϤ⧇ secret āχāĻŽā§‡āϜ āϞ⧇āϝāĻŧāĻžāϰ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āĻšāϝāĻŧ āύāĻžāĨ¤

  • Rootless Docker
    Root āĻ›āĻžāĻĄāĻŧāĻž Docker āϚāĻžāϞāĻžāύ⧋ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āĻŦ⧃āĻĻā§āϧāĻŋ āĻ•āϰ⧇ āĻāĻŦāĻ‚ host compromise āĻā§āρāĻ•āĻŋ āĻ•āĻŽāĻžāϝāĻŧāĨ¤
    āϏāĻ•ā§āϰāĻŋāϝāĻŧ āĻ•āϰāϤ⧇:

    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

    āĻāϟāĻŋ base image āĻ“ dependency-āϤ⧇ āĻĻ⧁āĻ°ā§āĻŦāϞāϤāĻž āĻļāύāĻžāĻ•ā§āϤ āĻ•āϰāϤ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰ⧇āĨ¤

  • āϰāĻŋāϏ⧋āĻ°ā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āϏ⧀āĻŽāĻŋāϤ āĻ•āϰāĻž
    āĻ•āύāĻŸā§‡āχāύāĻžāϰāϕ⧇ āĻŽā§‡āĻŽāϰāĻŋ, CPU āĻ“ āĻĒā§āϰāϏ⧇āϏ āϏāĻ‚āĻ–ā§āϝāĻž āĻĻā§āĻŦāĻžāϰāĻž āϏ⧀āĻŽāĻŋāϤ āĻ•āϰ⧁āύ:

    docker run --memory=512m --cpus="1.5" --pids-limit=200 myimage

    āĻāϤ⧇ āϰāĻŋāϏ⧋āĻ°ā§āϏ overconsume āĻšāĻŦ⧇ āύāĻžāĨ¤
    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 āχāĻ¨ā§āϟāĻŋāĻ—ā§āϰ⧇āĻļāύ
    Build, test āĻ“ deploy GitHub Actions, GitLab CI, Jenkins pipeline-āĻ āĻāĻŽā§āĻŦ⧇āĻĄ āĻ•āϰ⧁āύāĨ¤
    GitHub Actions step āωāĻĻāĻžāĻšāϰāĻŖ:

    - run: docker build -t myapp:${GITHUB_SHA} .
    - run: docker push myapp:${GITHUB_SHA}
  • āϞāĻ—āĻŋāĻ‚ āĻ“ āĻŽāύāĻŋāϟāϰāĻŋāĻ‚
    āϏ⧇āĻ¨ā§āĻŸā§āϰāĻžāϞ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āϞāĻ— āĻĒāĻžāĻ āĻžāϤ⧇ logging driver (--log-driver) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ: ELK, Loki, SplunkāĨ¤
    Prometheus + cAdvisor āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ container metrics-āĻāϰ āϜāĻ¨ā§āϝāĨ¤

  • Production āĻĄā§‡āĻĒā§āϞāϝāĻŧāĻŽā§‡āĻ¨ā§āϟ
    āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ āĻ“ āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ āĻ•āύāĻĢāĻŋāĻ— āφāϞāĻžāĻĻāĻž āĻ•āϰ⧁āύ docker-compose.override.yml āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤
    High availability āĻ“ āĻ¸ā§āϕ⧇āϞāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ:

    • Docker Swarm
    • Kubernetes

🐞 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

āĻļ⧇āώ āĻāĻ• āϘāĻŖā§āϟāĻžāϰ āϞāĻ— āĻĻ⧇āĻ–āĻžāύ⧋

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 āχāωāϟāĻŋāϞāĻŋāϟāĻŋ āϝāĻž āĻ…āĻ¨ā§āϝ āĻĒā§āϰāϏ⧇āϏ⧇āϰ namespace-āĻ āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧ (āĻāĻ–āĻžāύ⧇ āĻ•āύāĻŸā§‡āχāύāĻžāϰ)āĨ¤ strace āϏāĻš āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻ­āĻŋāϤāϰ⧇ system call āĻŸā§āϰ⧇āϏ āĻ•āϰāĻž āϝāĻžāϝāĻŧ
nsenter --target $(docker inspect --format '{{.State.Pid}}' my_container) --mount --uts --ipc --net --pid strace -p 1

āĻ•āύāĻŸā§‡āχāύāĻžāϰ namespace-āĻ āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰ⧇ process 1-āĻāϰ system call āĻŸā§āϰ⧇āϏ āĻ•āϰāĻž

nsenter --target $(docker inspect --format '{{.State.Pid}}' my_container) --mount --uts --ipc --net --pid bash

āĻ•āύāĻŸā§‡āχāύāĻžāϰ namespace-āĻ 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

āĻāĻ•āĻŦāĻžāϰ āφāωāϟāĻĒ⧁āϟ āĻĻāĻŋāϝāĻŧ⧇ exit āĻ•āϰāĻž

docker container top āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻ­āĻŋāϤāϰ⧇ āϚāϞāĻŽāĻžāύ āĻĒā§āϰāϏ⧇āϏ⧇āϰ āϤāĻžāϞāĻŋāĻ•āĻž āĻĻ⧇āĻ–āĻžāύ⧋, Linux-āĻāϰ ps āĻāϰ āĻŽāϤ⧋, āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻ…ā§āϝāĻžāĻ•ā§āϟāĻŋāĻ­āĻŋāϟāĻŋ āĻŦāĻŋāĻļā§āϞ⧇āώāϪ⧇āϰ āϜāĻ¨ā§āϝ
docker top my_container

āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇ āϚāϞāĻŽāĻžāύ āĻĒā§āϰāϏ⧇āϏāϗ⧁āϞ⧋ āĻĻ⧇āĻ–āĻžāύ⧋

docker top my_container aux

ps aux āĻāϰ āĻŽāϤ⧋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āφāωāϟāĻĒ⧁āϟ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž

docker top my_container -eo pid,cmd

āĻļ⧁āϧ⧁ PID āĻ“ āĻĒā§āϰāϏ⧇āϏ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻ⧇āĻ–āĻžāύ⧋

docker diff āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻĢāĻžāχāϞāϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ base image-āĻāϰ āϤ⧁āϞāύāĻžāϝāĻŧ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ (āϝ⧋āĻ—, āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ, āĻŦāĻž āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž āĻĢāĻžāχāϞ) āĻĻ⧇āĻ–āĻžāύ⧋
docker diff my_container

base image āĻāϰ āϏāĻžāĻĨ⧇ āϤ⧁āϞāύāĻž āĻ•āϰ⧇ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻĢāĻžāχāϞāϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻĻ⧇āĻ–āĻžāύ⧋

docker diff my_container | grep '^A'

āĻļ⧁āϧ⧁ āϝ⧋āĻ— āĻ•āϰāĻž āĻĢāĻžāχāϞ (A — Added) āĻĻ⧇āĻ–āĻžāύ⧋

docker diff my_container | grep '^C'

āĻļ⧁āϧ⧁ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻĢāĻžāχāϞ (C — Changed) āĻĻ⧇āĻ–āĻžāύ⧋

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 āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ low-level āϟ⧁āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

đŸ’ŧ āωāĻ¨ā§āύāϤ Docker Compose āĻŦā§āϝāĻŦāĻšāĻžāϰ

🚀 āĻĒ⧇āĻļāĻžāĻĻāĻžāϰ Docker Compose āĻ•āĻŽāĻžāĻ¨ā§āĻĄ

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ

āωāĻĻāĻžāĻšāϰāĻŖ

āĻŦāĻ°ā§āĻŖāύāĻž

docker compose up docker-compose.yml āĻĢāĻžāχāϞ āĻĨ⧇āϕ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϚāĻžāϞ⧁ āĻ“ āĻŽā§āϝāĻžāύ⧇āϜ āĻ•āϰāĻž, āĻŦā§āϝāĻžāĻ•āĻ—ā§āϰāĻžāωāĻ¨ā§āĻĄā§‡ āϚāĻžāϞāĻžāύ⧋āϰ āϏ⧁āĻŦāĻŋāϧāĻžāϏāĻš
docker compose up -d web db

āĻļ⧁āϧ⧁ web āĻ“ db āϏāĻžāĻ°ā§āĻ­āĻŋāϏ detached āĻŽā§‹āĻĄā§‡ āϚāĻžāϞāĻžāύ⧋

docker compose up --build

āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϚāĻžāϞ⧁āϰ āφāϗ⧇ āχāĻŽā§‡āϜ rebuild āĻ•āϰāĻž

docker compose up --remove-orphans

āĻŦāĻ°ā§āϤāĻŽāĻžāύ compose āĻĢāĻžāχāϞ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āύāϝāĻŧ āĻāĻŽāύ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž

docker compose build compose āĻĢāĻžāχāϞ⧇ āĻŦāĻ°ā§āĻŖāĻŋāϤ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āχāĻŽā§‡āϜ build āĻ•āϰāĻž, cache control āĻ“ parallel build āϏāĻžāĻĒā§‹āĻ°ā§āϟāϏāĻš
docker compose build --no-cache

cache āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻ•āϰ⧇ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āχāĻŽā§‡āϜ rebuild

docker compose build --parallel

āϏāĻŦ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻāĻ•āϏāĻžāĻĨ⧇ build āĻ•āϰ⧇ āĻ—āϤāĻŋ āĻŦāĻžāĻĄāĻŧāĻžāύ⧋

docker compose build web

āĻļ⧁āϧ⧁ web āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āχāĻŽā§‡āϜ build

docker compose pull āϏāĻŦ āĻŦāĻž āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āϜāĻ¨ā§āϝ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āĻĨ⧇āϕ⧇ āϏāĻ°ā§āĻŦāĻļ⧇āώ āχāĻŽā§‡āϜ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāĻž
docker compose pull

āϏāĻŦ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āχāĻŽā§‡āϜ pull āĻ•āϰāĻž

docker compose pull db

āĻļ⧁āϧ⧁ db āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āχāĻŽā§‡āϜ pull āĻ•āϰāĻž

docker compose pull --ignore-pull-failures

pull āϚāϞāĻžāĻ•āĻžāϞ⧇ error āωāĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰ⧇ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āϝāĻžāĻ“āϝāĻŧāĻž

docker compose restart āϏāĻŦ āĻŦāĻž āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ āĻ•āϰāĻž, āĻ•āύāĻŸā§‡āχāύāĻžāϰ recreate āύāĻž āĻ•āϰ⧇
docker compose restart

āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡āϰ āϏāĻŦ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ

docker compose restart worker

āĻļ⧁āϧ⧁ worker āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ

docker compose restart web db

āĻāĻ•āϏāĻžāĻĨ⧇ āĻāĻ•āĻžāϧāĻŋāĻ• āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ

docker compose exec āϚāϞāĻŽāĻžāύ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϚāĻžāϞāĻžāύ⧋, āχāĻ¨ā§āϟāĻžāĻ°â€Œā§āϝāĻžāĻ•ā§āϟāĻŋāĻ­ āĻŽā§‹āĻĄāϏāĻš
docker compose exec db psql -U user -d database

db āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇ psql āϚāĻžāϞāĻžāύ⧋

docker compose exec web sh

web āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇ āĻļ⧇āϞ āĻ–ā§‹āϞāĻž

docker compose exec api curl http://localhost:8080

api āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻĨ⧇āϕ⧇ curl āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āϚāĻžāϞāĻžāύ⧋

docker compose config āϏāĻŦ āĻĢāĻžāχāϞ āĻ“ environment variable āĻŦāĻŋāĻŦ⧇āϚāύāĻžāϝāĻŧ āύāĻŋāϝāĻŧ⧇ āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āϤ Compose āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āφāωāϟāĻĒ⧁āϟ āĻ•āϰāĻž
docker compose config

YAML āĻĢāϰāĻŽā§āϝāĻžāĻŸā§‡ āĻŽāĻžāĻ°ā§āϜ āĻ•āϰāĻž āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĻ⧇āĻ–āĻžāύ⧋

docker compose config --services

āϏāĻŦ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϤāĻžāϞāĻŋāĻ•āĻž āĻĻ⧇āĻ–āĻžāύ⧋

docker compose config --environment

āϏāĻžāĻ°ā§āĻ­āĻŋāϏāϗ⧁āϞ⧋āϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āϏāĻŦ environment variable āĻĻ⧇āĻ–āĻžāύ⧋

docker compose watch āϏ⧋āĻ°ā§āϏ āĻĢāĻžāχāϞ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āϏāĻŽāϝāĻŧ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ āĻ•āϰāĻž, āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āĻŸā§‡ āωāĻĒāϝ⧋āĻ—ā§€
docker compose watch

āĻĢāĻžāχāϞ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻĒāĻ°ā§āϝāĻŦ⧇āĻ•ā§āώāĻŖ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ āĻ•āϰāĻž

docker compose events Compose āχāϭ⧇āĻ¨ā§āϟ āĻ¸ā§āĻŸā§āϰāĻŋāĻŽ āĻ•āϰāĻž: āϏāĻžāĻ°ā§āĻ­āĻŋāϏ start, stop, update
docker compose events --json

āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞ⧋ JSON āĻĢāϰāĻŽā§āϝāĻžāĻŸā§‡ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāĻž

docker compose rm āĻ¸ā§āϟāĻĒāĻĄ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž
docker compose rm web db

web āĻ“ db āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž

docker compose pause āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻ…āĻĒāĻžāϰ⧇āĻļāύ pause āĻ•āϰāĻž
docker compose pause api

api āϏāĻžāĻ°ā§āĻ­āĻŋāϏ pause āĻ•āϰāĻž

docker compose unpause pause āĻ•āϰāĻž āϏāĻžāĻ°ā§āĻ­āĻŋāϏ resume āĻ•āϰāĻž
docker compose unpause api

api āϏāĻžāĻ°ā§āĻ­āĻŋāϏ resume āĻ•āϰāĻž

docker compose create āĻ•āύāĻŸā§‡āχāύāĻžāϰ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻ•āĻŋāĻ¨ā§āϤ⧁ āϚāĻžāϞ⧁ āύāĻž āĻ•āϰāĻž
docker compose create web db

web āĻ“ db āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āϤ⧈āϰāĻŋ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϚāĻžāϞ⧁ āύāĻž āĻ•āϰāĻž

docker compose images āϏāĻžāĻ°ā§āĻ­āĻŋāϏāϗ⧁āϞ⧋āϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āχāĻŽā§‡āϜ āϤāĻžāϞāĻŋāĻ•āĻž āĻĻ⧇āĻ–āĻžāύ⧋
docker compose images

āϏāĻŦ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āχāĻŽā§‡āϜ āĻĻ⧇āĻ–āĻžāύ⧋

docker compose top āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇ āϚāϞāĻŽāĻžāύ āĻĒā§āϰāϏ⧇āϏ āĻĻ⧇āĻ–āĻžāύ⧋
docker compose top web

web āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇ āĻĒā§āϰāϏ⧇āϏ āϤāĻžāϞāĻŋāĻ•āĻž āĻĻ⧇āĻ–āĻžāύ⧋

🛠 Docker Compose āĻĻāĻŋāϝāĻŧ⧇ āωāĻĒāϝ⧋āĻ—ā§€ āĻĒā§āĻ°ā§āϝāĻžāĻ•āϟāĻŋāϏ āĻ“ āĻ…āĻŸā§‹āĻŽā§‡āĻļāύ

  • āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āφāϞāĻžāĻĻāĻž āĻ•āϰāĻž
    āĻ­āĻŋāĻ¨ā§āύ āĻ­āĻŋāĻ¨ā§āύ āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ (development, staging, production) āφāϞāĻžāĻĻāĻž docker-compose.override.yml āĻĢāĻžāχāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ āĻāϤ⧇ āĻ•āύāĻĢāĻŋāĻ— āφāϞāĻžāĻĻāĻž āĻĨāĻžāϕ⧇ āĻ“ āĻ•āύāĻĢā§āϞāĻŋāĻ•ā§āϟ āĻāĻĄāĻŧāĻžāύ⧋ āϝāĻžāϝāĻŧāĨ¤
    āĻāĻ•āĻžāϧāĻŋāĻ• config āĻĢāĻžāχāϞ -f āĻĢā§āĻ˛ā§āϝāĻžāĻ— āĻĻāĻŋāϝāĻŧ⧇ combine āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ:

    docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d

    āĻ­āĻŋāĻ¨ā§āύ .env āĻĢāĻžāχāϞ (.env.dev, .env.prod āχāĻ¤ā§āϝāĻžāĻĻāĻŋ) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ environment variable āĻŽā§āϝāĻžāύ⧇āϜ āĻ•āϰ⧁āύāĨ¤

  • āϏāĻŋāĻ•ā§āϰ⧇āϟ āύāĻŋāϰāĻžāĻĒāĻĻ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ
    āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āĻĄā§‡āϟāĻž (āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ, āĻŸā§‹āϕ⧇āύ) āϏāϰāĻžāϏāϰāĻŋ Compose āĻĢāĻžāχāϞ⧇ āϰāĻžāĻ–āĻŦ⧇āύ āύāĻžāĨ¤ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ:

    • .env āĻĢāĻžāχāϞ (āĻāϗ⧁āϞ⧋ āĻāύāĻ•ā§āϰāĻŋāĻĒā§āĻŸā§‡āĻĄ āύāϝāĻŧ, āĻĒāĻžāĻŦāϞāĻŋāĻ• āϰāĻŋāĻĒā§‹āϤ⧇ commit āĻ•āϰāĻž āωāϚāĻŋāϤ āύāϝāĻŧ)
    • docker secret āĻ“ docker config (Swarm-āĻ āύāĻŋāϰāĻžāĻĒāĻĻ āϏāĻŋāĻ•ā§āϰ⧇āϟ āĻ“ āĻ•āύāĻĢāĻŋāĻ— āĻŽā§āϝāĻžāύ⧇āϜāĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ)
    • āϏāĻŋāĻ•ā§āϰ⧇āϟāϏāĻš āĻ•āύāĻĢāĻŋāĻ— āĻĢāĻžāχāϞ⧇āϰ āϜāĻ¨ā§āϝ external āĻ­āϞāĻŋāωāĻŽ
    • āĻŦāĻžāĻšā§āϝāĻŋāĻ• secret management āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ (āϝ⧇āĻŽāύ 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
  • āφāĻĒāĻĄā§‡āĻŸā§‡āϰ āϏāĻŽāϝāĻŧ downtime āĻ•āĻŽāĻžāύ⧋
    āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āφāĻĒāĻĄā§‡āĻŸā§‡āϰ āφāϗ⧇ āϚāĻžāϞāĻžāύ:

    docker compose pull && docker compose up -d --remove-orphans

    -d āĻŦā§āϝāĻžāĻ•āĻ—ā§āϰāĻžāωāĻ¨ā§āĻĄā§‡ āϚāĻžāϞāĻžāϝāĻŧ, āφāϰ --remove-orphans āĻ…āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻŽā§āϛ⧇ āĻĻ⧇āϝāĻŧāĨ¤
    āĻĒ⧁āϰāĻžāύ⧋ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻĒ⧁āϰ⧋āĻĒ⧁āϰāĻŋ āĻŦāĻ¨ā§āϧ āĻ“ āĻŽā§āϛ⧇ āĻĢ⧇āϞāϤ⧇:

    docker compose down --remove-orphans

    āĻāϤ⧇ āύāϤ⧁āύ āχāĻŽā§‡āϜ āϞ⧋āĻĄ āĻšāϝāĻŧ āĻ“ downtime āĻ›āĻžāĻĄāĻŧāĻž āĻ•āύāĻŸā§‡āχāύāĻžāϰ āϰāĻŋāĻĢā§āϰ⧇āĻļ āĻšāϝāĻŧāĨ¤

  • āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āĻŸā§‡ āĻšāϟ āϕ⧋āĻĄ āϰāĻŋāϞ⧋āĻĄ (āĻ­āϞāĻŋāωāĻŽ āĻĻāĻŋāϝāĻŧ⧇)
    volumes āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϞ⧋āĻ•āĻžāϞ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇ āĻŽāĻžāωāĻ¨ā§āϟ āĻ•āϰ⧁āύāĨ¤ āĻāϤ⧇ āχāĻŽā§‡āϜ rebuild āĻ›āĻžāĻĄāĻŧāĻžāχ āϕ⧋āĻĄ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āϤāĻžā§ŽāĻ•ā§āώāĻŖāĻŋāĻ• āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻšāϝāĻŧāĨ¤
    āĻĢāĻžāχāϞ permission āϏāĻŽāĻ¸ā§āϝāĻž āĻ“ cache āĻāϰ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ (āĻŦāĻŋāĻļ⧇āώ āĻ•āϰ⧇ Windows āĻ“ macOS āĻ) āĻŽāĻžāĻĨāĻžāϝāĻŧ āϰāĻžāϖ⧁āύāĨ¤

  • āĻ­āϞāĻŋāωāĻŽ āĻ›āĻžāĻĄāĻŧāĻž āĻšāϟ āϕ⧋āĻĄ āϰāĻŋāϞ⧋āĻĄ (Compose 2.22+)

    develop:
      watch:
        - path: ./src
          action: sync
          target: /app
  • āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āϏ⧇āĻ¨ā§āĻŸā§āϰāĻžāϞāĻžāχāϜāĻĄ āϞāĻ—āĻŋāĻ‚
    āϞāĻ—āϗ⧁āϞ⧋ ELK Stack, Loki, Prometheus, Fluentd āĻāϰ āĻŽāϤ⧋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻĒāĻžāĻ āĻžāύ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ āĻ“ āĻ…ā§āϝāĻžāϞāĻžāĻ°ā§āϟāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝāĨ¤
    Docker logging driver (--log-driver) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϏ⧇āĻ¨ā§āĻŸā§āϰāĻžāϞ āϞāĻ— āĻ•āĻžāϞ⧇āĻ•āĻļāύ āϚāĻžāϞ⧁ āĻ•āϰ⧁āύāĨ¤
    Compose āĻ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ logging driver āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰ⧁āύ:

    services:
      api:
        image: my_api
        logging:
          driver: "json-file"
          options:
            max-size: "10m"
            max-file: "3"
  • āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ
    docker-compose.yml āĻ restart āĻĒāϞāĻŋāϏāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰ⧁āύ:

    restart: unless-stopped

    āĻ…āĻ¨ā§āϝ restart āĻĒāϞāĻŋāϏāĻŋ:

    • no — āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ āύāϝāĻŧ (āĻĄāĻŋāĻĢāĻ˛ā§āϟ)
    • always — āϏāĻŦāϏāĻŽāϝāĻŧ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ
    • on-failure — āϕ⧇āĻŦāϞ error āĻšāϞ⧇ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ (āϐāĻšā§āĻ›āĻŋāĻ• retry count āϏāĻš)

    Production-āĻ unless-stopped āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āωāĻĒāϝ⧁āĻ•ā§āϤ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āĻ¸ā§āĻĨāĻžāϝāĻŧāĻŋāĻ¤ā§āĻŦ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇āĨ¤
    āĻāϟāĻŋ failure āĻŦāĻž host reboot āĻāϰ āĻĒāϰ⧇ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻĒ⧁āύāϰ⧁āĻĻā§āϧāĻžāϰ āĻ•āϰ⧇āĨ¤

  • āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻĒā§āϰ⧋āĻĢāĻžāχāϞ
    āĻļ⧁āϧ⧁ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻ—ā§āϰ⧁āĻĒ āϚāĻžāϞāĻžāύ⧋āϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ:

    services:
      db:
        image: postgres
        profiles: ["backend"]
      web:
        image: nginx
        profiles: ["frontend"]

    āĻļ⧁āϧ⧁ frontend āĻĒā§āϰ⧋āĻĢāĻžāχāϞ āϚāĻžāϞāĻžāϤ⧇:

    docker compose --profile frontend up

🐞 Docker Compose-āĻ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻĄāĻŋāĻŦāĻžāĻ—āĻŋāĻ‚ āĻ“ āĻĒā§āϰ⧋āĻĢāĻžāχāϞāĻŋāĻ‚

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ

āωāĻĻāĻžāĻšāϰāĻŖ

āĻŦāĻ°ā§āĻŖāύāĻž

docker compose exec āϚāϞāĻŽāĻžāύ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϚāĻžāϞāĻžāύ⧋, āϝāĻž āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻĻ⧇āϝāĻŧ āĻŦāĻž āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āϚāĻžāϞāĻžāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧇
docker compose exec web sh

web āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇ āĻļ⧇āϞ āĻ–ā§‹āϞāĻž

docker compose exec db psql -U user -d database

db āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇ psql āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϚāĻžāϞāĻžāύ⧋

docker compose logs āĻĄāĻžāϝāĻŧāĻžāĻ—āύāĻ¸ā§āϟāĻŋāĻ• āĻ“ āĻŽāύāĻŋāϟāϰāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϞāĻ— āĻĻ⧇āĻ–āĻž
docker compose logs -f db

db āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϞāĻ— āϰāĻŋāϝāĻŧ⧇āϞ-āϟāĻžāχāĻŽā§‡ āĻĻ⧇āĻ–āĻž

docker compose logs --tail=50 api

api āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āĻļ⧇āώ ā§Ģā§Ļ āϞāĻžāχāύ āϞāĻ— āĻĻ⧇āĻ–āĻžāύ⧋

docker compose logs --since=1h web

web āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āĻļ⧇āώ āĻāĻ• āϘāĻŖā§āϟāĻžāϰ āϞāĻ— āĻĻ⧇āĻ–āĻžāύ⧋

docker inspect āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϚāĻžāϞāĻžāύ⧋ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āϤāĻĨā§āϝ āĻĻ⧇āĻ–āĻž
docker inspect $(docker compose ps -q web)

web āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ JSON āϤāĻĨā§āϝ āĻĒāĻžāĻ“āϝāĻŧāĻž

docker container stats āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϚāĻžāϞāĻžāύ⧋ āĻ•āύāĻŸā§‡āχāύāĻžāϰāϗ⧁āϞ⧋āϰ āϰāĻŋāϏ⧋āĻ°ā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻŽāύāĻŋāϟāϰ āĻ•āϰāĻž
docker stats $(docker compose ps -q worker)

worker āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ CPU, āĻŽā§‡āĻŽāϰāĻŋ āχāĻ¤ā§āϝāĻžāĻĻāĻŋ āĻŸā§āĻ°ā§āϝāĻžāĻ• āĻ•āϰāĻž

docker compose run --rm āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϏ⧇āϟāĻŋāĻ‚āϏāϏāĻš āĻ…āĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āϚāĻžāϞāĻžāύ⧋, āĻĄāĻŋāĻŦāĻžāĻ—āĻŋāĻ‚āϝāĻŧ⧇ āωāĻĒāϝ⧋āĻ—ā§€
docker compose run --rm web sh

web āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āϜāĻ¨ā§āϝ āχāĻ¨ā§āϟāĻžāĻ°â€Œā§āϝāĻžāĻ•ā§āϟāĻŋāĻ­ āĻļ⧇āϞāϏāĻš āĻāĻ•-āĻ•āĻžāϞ⧀āύ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āϚāĻžāϞāĻžāύ⧋

docker container cp āĻšā§‹āĻ¸ā§āϟ āĻ“ āĻ•āύāĻŸā§‡āχāύāĻžāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻĢāĻžāχāϞ āĻ•āĻĒāĻŋ āĻ•āϰāĻž
docker cp $(docker compose ps -q db):/dump.sql ./dump.sql

db āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻĨ⧇āϕ⧇ āĻšā§‹āĻ¸ā§āĻŸā§‡ āĻĢāĻžāχāϞ āĻ•āĻĒāĻŋ

💡 āϜāϟāĻŋāϞ multi-service āĻĄāĻŋāĻŦāĻžāĻ—āĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ docker compose run --rm āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ āĻāϤ⧇ āφāϞāĻžāĻĻāĻž āĻ•āύāĻŸā§‡āχāύāĻžāϰ āϚāĻžāϞāĻžāύ⧋ āϝāĻžāϝāĻŧ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻ“ āĻ­āϞāĻŋāωāĻŽāϏāĻš, āĻŽā§‚āϞ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇ āĻĒā§āϰāĻ­āĻžāĻŦ āύāĻž āĻĢ⧇āϞ⧇āĨ¤

📚 āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āϰāĻŋāϏ⧋āĻ°ā§āϏ

đŸšĢ .dockerignore āĻĻāĻŋāϝāĻŧ⧇ āĻĢāĻžāχāϞ āωāĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰāĻž

āχāĻŽā§‡āĻœā§‡ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āύāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ .dockerignore āĻ āĻĢāĻžāχāϞ āĻ“ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āϝ⧋āĻ— āĻ•āϰ⧁āύāĨ¤ āĻāϤ⧇ āϏāĻžāχāϜ āĻ•āĻŽā§‡ āĻ“ build āĻĻā§āϰ⧁āϤ āĻšāϝāĻŧ:

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 Cheat Sheet — āĻ…āĻĢāĻŋāϏāĻŋāϝāĻŧāĻžāϞ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ Docker āϚāĻŋāϟ āĻļā§€āϟ:
https://dockerlabs.collabnix.com/docker/cheatsheet/

📗 Docker Hub — āχāĻŽā§‡āϜ āĻ“ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ:
https://hub.docker.com/