đŗ Docker
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 |
|
|
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 |
āĻļā§āώ ā§Ģā§Ļ āϞāĻžāĻāύ āϞāĻ āĻĻā§āĻāĻžāύ⧠|
|
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 |
āĻāĻāĻŦāĻžāϰā§āϰ āĻāύā§āϝ snapshot āĻāĻāĻāĻĒā§āĻ āĻĻā§āĻāĻžāύ⧠|
|
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" |
āĻāύāĻā§āĻāύāĻžāϰā§āϰ āϞāĻ āĻĢāĻžāĻāϞ āϏā§āĻā§āϰāĻŋāĻŽ āĻāϰ⧠|
|
docker container top |
āĻāύāĻā§āĻāύāĻžāϰā§āϰ āĻā§āϤāϰ⧠āĻāϞāĻŽāĻžāύ āĻĒā§āϰāϏā§āϏ āϤāĻžāϞāĻŋāĻāĻž | |
docker top container |
|
|
docker container pause |
āĻāύāĻā§āĻāύāĻžāϰā§āϰ āϏāĻŦ āĻĒā§āϰāϏā§āϏ pause āĻāϰāĻž | |
docker pause container |
|
|
docker container unpause |
pause āĻāϰāĻž āĻāύāĻā§āĻāύāĻžāϰ resume āĻāϰāĻž | |
docker unpause container |
|
|
docker container update |
āĻāύāĻā§āĻāύāĻžāϰ āϏā§āĻāĻŋāĻāϏ āϰāĻŋāϏā§āĻāĻžāϰā§āĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻĒāĻĄā§āĻ āĻāϰāĻž | |
docker update --memory 500m container |
āĻāύāĻā§āĻāύāĻžāϰā§āϰ āĻŽā§āĻŽāϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ 500 MB-āϤ⧠āϏā§āĻŽāĻžāĻŦāĻĻā§āϧ āĻāϰāĻž |
đ§ą āĻāĻŽā§āĻ āĻ Dockerfile
āĻāĻŽāĻžāύā§āĻĄ |
āĻāĻĻāĻžāĻšāϰāĻŖ |
āĻŦāϰā§āĻŖāύāĻž |
|---|---|---|
docker buildx build |
āĻāĻāĻāĻŋ Dockerfile āĻĨā§āĻā§ Docker āĻāĻŽā§āĻ āϤā§āϰāĻŋ āĻāϰāĻž | |
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 āĻŦāĻž āĻ āύā§āϝ āϰā§āĻāĻŋāϏā§āĻā§āϰāĻŋāϤ⧠push āĻāϰāĻž | |
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 |
āĻĒā§āϰāϤāĻŋ ā§Šā§Ļ āϏā§āĻā§āύā§āĻĄā§ āϏāĻžāϰā§āĻāĻŋāϏ āĻ ā§āϝāĻžāĻā§āĻāϞā§āĻŦāϞāĻŋāĻāĻŋ āϝāĻžāĻāĻžāĻāϝāĻŧā§āϰ āĻāύā§āϝ healthcheck āϝā§āĻ āĻāϰāĻž |
|
docker inspect --format='{{json .State.Health}}' container_name |
āĻāϞāĻŽāĻžāύ āĻāύāĻā§āĻāύāĻžāϰā§āϰ healthcheck āϏā§āĻā§āϝāĻžāĻāĻžāϏ āĻĻā§āĻāĻž |
đ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āĻ āĻāϞāĻŋāĻāĻŽ
āĻāĻŽāĻžāύā§āĻĄ |
āĻāĻĻāĻžāĻšāϰāĻŖ |
āĻŦāϰā§āĻŖāύāĻž |
|---|---|---|
docker network ls |
āϏāĻŦ Docker āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āϤāĻžāϞāĻŋāĻāĻž | |
docker network ls |
āϤā§āϰāĻŋ āĻāϰāĻž āϏāĻŦ Docker āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āĻĻā§āĻāĻžāύ⧠|
|
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 |
āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ subnet āϏāĻš āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āϤā§āϰāĻŋ |
|
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 |
āϏāĻžāϰā§āĻāĻŋāϏāĻā§āϞ⧠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 |
|
|
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 |
āϏāĻžāϰā§āĻāĻŋāϏ āĻāĻŽā§āĻ build āĻŦāĻž rebuild āĻāϰāĻž | |
docker compose build |
|
|
docker compose build web |
āĻļā§āϧ⧠|
|
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 |
āĻļā§āϧ⧠|
|
docker compose pull --ignore-pull-failures |
āĻāĻŋāĻā§ āĻāĻŽā§āĻ āĻĢā§āϞ āĻāϰāϞā§āĻ pull āĻāĻžāϞāĻŋāϝāĻŧā§ āϝāĻžāĻāϝāĻŧāĻž |
|
docker compose restart |
āϏāĻŦ āĻŦāĻž āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϏāĻžāϰā§āĻāĻŋāϏ āϰāĻŋāϏā§āĻāĻžāϰā§āĻ āĻāϰāĻž | |
docker compose restart 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 |
|
|
docker compose start db api |
āĻāĻāϏāĻžāĻĨā§ āĻāĻāĻžāϧāĻŋāĻ āϏāĻžāϰā§āĻāĻŋāϏ āĻāĻžāϞāĻžāύ⧠|
|
docker compose stop |
āϏāĻžāϰā§āĻāĻŋāϏ āĻŦāύā§āϧ āĻāϰāĻž āĻāĻŋāύā§āϤ⧠āĻāύāĻā§āĻāύāĻžāϰ āύāĻž āĻŽā§āĻā§ āĻĢā§āϞāĻž | |
docker compose stop 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 |
|
|
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 |
|
|
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' |
|
|
docker container update |
āĻāϞāĻŽāĻžāύ āĻāύāĻā§āĻāύāĻžāϰā§āϰ āϰāĻŋāϏā§āϰā§āϏ āϞāĻŋāĻŽāĻŋāĻ/āϏā§āĻāĻŋāĻāϏ āϰāĻŋāϏā§āĻāĻžāϰā§āĻ āĻāĻžāĻĄāĻŧāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž | |
docker update --cpus 2 --memory 1g my_container |
⧍ CPU āĻ 1 GB RAM āϞāĻŋāĻŽāĻŋāĻ āϏā§āĻ āĻāϰāĻž |
|
docker update --restart unless-stopped my_container |
auto-restart āĻĒāϞāĻŋāϏāĻŋ |
|
docker update --pids-limit 200 my_container |
āĻĒā§āϰāϏā§āϏ āϏāĻāĻā§āϝāĻž ⧍ā§Ļā§Ļ āϤ⧠āϏā§āĻŽāĻŋāϤ āĻāϰāĻž |
|
docker container diff |
āĻāύāĻā§āĻāύāĻžāϰ āĻ āĻŽā§āϞ āĻāĻŽā§āĻā§āϰ āĻŽāϧā§āϝ⧠āĻĢāĻžāĻāϞāϏāĻŋāϏā§āĻā§āĻŽ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻĻā§āĻāĻžāύā§āĨ¤ āĻĄāĻŋāĻŦāĻžāĻāĻŋāĻ āĻ āĻ āĻĄāĻŋāĻāĻŋāĻāϝāĻŧā§āϰ āĻāύā§āϝ āĻāĻĒāϝā§āĻā§ | |
docker diff my_container |
āĻāύāĻā§āĻāύāĻžāϰ⧠āϏāĻŦ āĻĢāĻžāĻāϞāϏāĻŋāϏā§āĻā§āĻŽ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻĻā§āĻāĻžāύ⧠|
|
docker diff my_container | grep '^A' |
āĻļā§āϧ⧠āύāϤā§āύ āĻĢāĻžāĻāϞ ( |
|
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 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 |
āĻļā§āώ āĻāĻ āĻāĻŖā§āĻāĻžāϰ āϞāĻ āĻĻā§āĻāĻžāύ⧠|
|
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 |
|
|
docker top my_container -eo pid,cmd |
āĻļā§āϧ⧠PID āĻ āĻĒā§āϰāϏā§āϏ āĻāĻŽāĻžāύā§āĻĄ āĻĻā§āĻāĻžāύ⧠|
|
docker diff |
āĻāύāĻā§āĻāύāĻžāϰā§āϰ āĻĢāĻžāĻāϞāϏāĻŋāϏā§āĻā§āĻŽā§ base image-āĻāϰ āϤā§āϞāύāĻžāϝāĻŧ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ (āϝā§āĻ, āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ, āĻŦāĻž āĻŽā§āĻā§ āĻĢā§āϞāĻž āĻĢāĻžāĻāϞ) āĻĻā§āĻāĻžāύ⧠| |
docker diff my_container |
base image āĻāϰ āϏāĻžāĻĨā§ āϤā§āϞāύāĻž āĻāϰ⧠āĻāύāĻā§āĻāύāĻžāϰ āĻĢāĻžāĻāϞāϏāĻŋāϏā§āĻā§āĻŽ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻĻā§āĻāĻžāύ⧠|
|
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āĻāĻŦāĻ āĻ āύā§āϝāĻžāύā§āϝ low-level āĻā§āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
đŧ āĻāύā§āύāϤ Docker Compose āĻŦā§āϝāĻŦāĻšāĻžāϰ
đ āĻĒā§āĻļāĻžāĻĻāĻžāϰ Docker Compose āĻāĻŽāĻžāύā§āĻĄ
āĻāĻŽāĻžāύā§āĻĄ |
āĻāĻĻāĻžāĻšāϰāĻŖ |
āĻŦāϰā§āĻŖāύāĻž |
|---|---|---|
docker compose up |
docker-compose.yml āĻĢāĻžāĻāϞ āĻĨā§āĻā§ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϏāĻžāϰā§āĻāĻŋāϏ āĻāĻžāϞ⧠āĻ āĻŽā§āϝāĻžāύā§āĻ āĻāϰāĻž, āĻŦā§āϝāĻžāĻāĻā§āϰāĻžāĻāύā§āĻĄā§ āĻāĻžāϞāĻžāύā§āϰ āϏā§āĻŦāĻŋāϧāĻžāϏāĻš |
|
docker compose up -d web db |
āĻļā§āϧ⧠|
|
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 |
āĻļā§āϧ⧠|
|
docker compose pull |
āϏāĻŦ āĻŦāĻž āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϏāĻžāϰā§āĻāĻŋāϏā§āϰ āĻāύā§āϝ āϰā§āĻāĻŋāϏā§āĻā§āϰāĻŋ āĻĨā§āĻā§ āϏāϰā§āĻŦāĻļā§āώ āĻāĻŽā§āĻ āĻĄāĻžāĻāύāϞā§āĻĄ āĻāϰāĻž | |
docker compose pull |
āϏāĻŦ āϏāĻžāϰā§āĻāĻŋāϏā§āϰ āĻāĻŽā§āĻ pull āĻāϰāĻž |
|
docker compose pull db |
āĻļā§āϧ⧠|
|
docker compose pull --ignore-pull-failures |
pull āĻāϞāĻžāĻāĻžāϞ⧠error āĻāĻĒā§āĻā§āώāĻž āĻāϰ⧠āĻāĻžāϞāĻŋāϝāĻŧā§ āϝāĻžāĻāϝāĻŧāĻž |
|
docker compose restart |
āϏāĻŦ āĻŦāĻž āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϏāĻžāϰā§āĻāĻŋāϏ āϰāĻŋāϏā§āĻāĻžāϰā§āĻ āĻāϰāĻž, āĻāύāĻā§āĻāύāĻžāϰ recreate āύāĻž āĻāϰ⧠| |
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 |
āϏāĻŦ āĻĢāĻžāĻāϞ āĻ 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 |
|
|
docker compose pause |
āϏāĻžāϰā§āĻāĻŋāϏ āĻ āĻĒāĻžāϰā§āĻļāύ pause āĻāϰāĻž | |
docker compose pause api |
|
|
docker compose unpause |
pause āĻāϰāĻž āϏāĻžāϰā§āĻāĻŋāϏ resume āĻāϰāĻž | |
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 āĻĻāĻŋāϝāĻŧā§ āĻāĻĒāϝā§āĻā§ āĻĒā§āϰā§āϝāĻžāĻāĻāĻŋāϏ āĻ āĻ āĻā§āĻŽā§āĻļāύ
āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻāϞāĻžāĻĻāĻž āĻāϰāĻž
āĻāĻŋāύā§āύ āĻāĻŋāύā§āύ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§āϰ āĻāύā§āϝ (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 |
|
|
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 |
|
đĄ āĻāĻāĻŋāϞ 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/