ЁЯР│ Docker

Multilingual DevOps cheat sheet: Linux, Docker, Git, Kubernetes, Helm, Terraform, practical scenarios & templates.
рдкреНрд░рдХрд╛рд╢рд┐рдд

31 рдЕрдЧрд╕реНрдд 2025

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 рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕реНрдЯреЛрд░реЗрдЬ рдбреНрд░рд╛рдЗрд╡рд░ рджрд┐рдЦрд╛рдПрдБ

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 рд╕реЗ рдмрд╛рдБрдзреЗрдВ

docker container ls рдЪрд▓ рд░рд╣реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рд╕реВрдЪреА рджрд┐рдЦрд╛рдПрдБ
docker ps

рдХреЗрд╡рд▓ рдЪрд▓ рд░рд╣реЗ рдХрдВрдЯреЗрдирд░ рджрд┐рдЦрд╛рдПрдБ

docker ps -a

рд╕рднреА рдХрдВрдЯреЗрдирд░ рджрд┐рдЦрд╛рдПрдБ, рдЬрд┐рдирдореЗрдВ рд░реБрдХреЗ рд╣реБрдП рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ

docker ps --format '{{.Names}}'

рдХреЗрд╡рд▓ рдХрдВрдЯреЗрдирд░ рдирд╛рдо рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдВ

docker container start рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд░реБрдХреЗ рд╣реБрдП рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ
docker start container_name

рдирд╛рдо рджреНрд╡рд╛рд░рд╛ рдХрдВрдЯреЗрдирд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

docker start $(docker ps -aq)

рд╕рднреА рдХрдВрдЯреЗрдирд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

docker start -ai container_name

рдХрдВрдЯреЗрдирд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ рдФрд░ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдЯрд░реНрдорд┐рдирд▓ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ

docker container stop рдЪрд▓ рд░рд╣реЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рд░реЛрдХреЗрдВ
docker stop container_name

рдирд╛рдо рджреНрд╡рд╛рд░рд╛ рдХрдВрдЯреЗрдирд░ рд░реЛрдХреЗрдВ

docker stop $(docker ps -q)

рд╕рднреА рдЪрд▓ рд░рд╣реЗ рдХрдВрдЯреЗрдирд░ рд░реЛрдХреЗрдВ

docker stop -t 5 container_name

рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 5 рд╕реЗрдХрдВрдб рджреЗрдВ рдФрд░ рдлрд┐рд░ рд░реЛрдХреЗрдВ

docker container restart рдХрдВрдЯреЗрдирд░ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ
docker restart container_name

рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдВрдЯреЗрдирд░ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

docker restart $(docker ps -q)

рд╕рднреА рдЪрд▓ рд░рд╣реЗ рдХрдВрдЯреЗрдирд░ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

docker restart -t 10 container_name

10 рд╕реЗрдХрдВрдб рдХреА рджреЗрд░реА рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

docker container rm рдХрдВрдЯреЗрдирд░ рд╣рдЯрд╛рдПрдБ
docker rm container_name

рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реБрдХрд╛ рд╣реБрдЖ рдХрдВрдЯреЗрдирд░ рд╣рдЯрд╛рдПрдБ

docker rm $(docker ps -aq)

рд╕рднреА рд░реБрдХреЗ рд╣реБрдП рдХрдВрдЯреЗрдирд░ рд╣рдЯрд╛рдПрдБ

docker rm -f container_name

рдЪрд▓ рд░рд╣реЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рдмрд▓рдкреВрд░реНрд╡рдХ рд╣рдЯрд╛рдПрдБ

docker image ls рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдЗрдореЗрдЬ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ
docker images

рд╣реЛрд╕реНрдЯ рдкрд░ рд╕рднреА рдЗрдореЗрдЬ рджрд┐рдЦрд╛рдПрдБ

docker images -a

рд╕рднреА рдЗрдореЗрдЬ рджрд┐рдЦрд╛рдПрдБ, рдЬрд┐рдирдореЗрдВ рдордзреНрдпрд╡рд░реНрддреА рд▓реЗрдпрд░реНрд╕ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ

docker images --format '{{.Repository}}:{{.Tag}}'

рдХреЗрд╡рд▓ рдЗрдореЗрдЬ рдирд╛рдо рдФрд░ рдЯреИрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдВ

docker image rm рд╕реНрдерд╛рдиреАрдп рд╕рдВрдЧреНрд░рд╣рдг рд╕реЗ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдЗрдореЗрдЬ рд╣рдЯрд╛рдПрдБ
docker rmi test1:latest

рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА 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

рдХрдВрдЯреЗрдирд░ рдореЗрдВ detached рдореЛрдб рдореЗрдВ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ (рдмрд┐рдирд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП)

docker container logs рдХрдВрдЯреЗрдирд░ рд▓реЙрдЧ рджреЗрдЦреЗрдВ
docker logs container

container рдХрдВрдЯреЗрдирд░ рд╕реЗ рд╕рднреА рд▓реЙрдЧ рджрд┐рдЦрд╛рдПрдБ

docker logs -f container

рдХрдВрдЯреЗрдирд░ рд▓реЙрдЧ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдлрд╝реЙрд▓реЛ рдХрд░реЗрдВ

docker logs --tail 50 container

рд▓реЙрдЧ рдХреА рдЕрдВрддрд┐рдо 50 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рджрд┐рдЦрд╛рдПрдБ

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

рдПрдХ рдмрд╛рд░ рдХрд╛ рд╕реНрдиреИрдкрд╢реЙрдЯ рджрд┐рдЦрд╛рдПрдБ рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ

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 рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рд░реЛрдХреЗрдВ
docker pause container

container рдХрдВрдЯреЗрдирд░ рдХреЛ рд░реЛрдХреЗрдВ

docker container unpause рд░реБрдХреЗ рд╣реБрдП рдХрдВрдЯреЗрдирд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ
docker unpause container

container рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

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 рдореЗрдВ рдкреБрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреИрдЧ рдЬреЛрдбрд╝реЗрдВ

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 рдпрд╛ рдЕрдиреНрдп рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдкрд░ рдЗрдореЗрдЬ рдкреБрд╢ рдХрд░реЗрдВ
docker push myrepo/my_image:latest

latest рдЯреИрдЧ рдХреА рдЧрдИ рдЗрдореЗрдЬ рдХреЛ myrepo рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдкрд░ рдкреБрд╢ рдХрд░реЗрдВ

docker push myrepo/my_image:1.0

1.0 рдЯреИрдЧ рдХреА рдЧрдИ рдЗрдореЗрдЬ рдкреБрд╢ рдХрд░реЗрдВ

docker push myrepo/my_image

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯреИрдЧ latest рд╡рд╛рд▓реА рдЗрдореЗрдЬ рдкреБрд╢ рдХрд░реЗрдВ

docker login Docker Hub рдпрд╛ рдЕрдиреНрдп рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░реЗрдВ
docker login

Docker Hub рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░реЗрдВ

docker login myregistry.local:5000

рдирд┐рдЬреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВ

docker login -u username -p password

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВ (рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ)

docker logout Docker Hub рдпрд╛ рдЕрдиреНрдп рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рд▓реЙрдЧрдЖрдЙрдЯ рдХрд░реЗрдВ
docker logout

Docker Hub рд╕реЗ рд▓реЙрдЧрдЖрдЙрдЯ рдХрд░реЗрдВ

docker logout myregistry.local:5000

рдирд┐рдЬреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рд▓реЙрдЧрдЖрдЙрдЯ рдХрд░реЗрдВ

HEALTHCHECK Dockerfile рдирд┐рд░реНрджреЗрд╢, рдЬреЛ рдХрдВрдЯреЗрдирд░ рдХреА рд╕реНрд╡рд╛рд╕реНрдереНрдп рд╕реНрдерд┐рддрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ
HEALTHCHECK --interval=30s --timeout=5s --retries=3 CMD curl -f http://localhost/ || exit 1

рд╣рд░ 30 рд╕реЗрдХрдВрдб рдореЗрдВ рд╕реЗрд╡рд╛ рдЙрдкрд▓рдмреНрдзрддрд╛ рдЬрд╛рдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЗрд▓реНрдердЪреЗрдХ рдЬреЛрдбрд╝реЗрдВ

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

рдЪрд▓ рд░рд╣реЗ рдХрдВрдЯреЗрдирд░ рдХрд╛ рд╣реЗрд▓реНрдердЪреЗрдХ рд╕реНрдЯреЗрдЯрд╕ рдЬрд╛рдБрдЪреЗрдВ

ЁЯФМ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рд╡реЙрд▓реНрдпреВрдо

рдХрдорд╛рдВрдб

рдЙрджрд╛рд╣рд░рдг

рд╡рд┐рд╡рд░рдг

docker network ls рд╕рднреА Docker рдиреЗрдЯрд╡рд░реНрдХ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ
docker network ls

рд╕рднреА рдмрдирд╛рдП рдЧрдП Docker рдиреЗрдЯрд╡рд░реНрдХ рджрд┐рдЦрд╛рдПрдБ

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

рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдмрдиреЗрдЯ рдХреЗ рд╕рд╛рде рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдПрдБ

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 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 up docker-compose.yml рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрдВрдЯреЗрдирд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ
docker compose up

рд╡рд░реНрддрдорд╛рди рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреА рд╕рднреА рд╕реЗрд╡рд╛рдПрдБ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдореЛрдб рдореЗрдВ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

docker compose up -d

рд╕реЗрд╡рд╛рдУрдВ рдХреЛ detached рдореЛрдб (рдкреГрд╖реНрдарднреВрдорд┐) рдореЗрдВ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

docker compose up --build

рд╕реЗрд╡рд╛рдПрдБ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрдореЗрдЬ рдмрдирд╛рдПрдБ

docker compose down up рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдХрдВрдЯреЗрдирд░, рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рд╡реЙрд▓реНрдпреВрдо рд░реЛрдХреЗрдВ рдФрд░ рд╣рдЯрд╛рдПрдБ
docker compose down

рд╕рднреА рдЪрд▓ рд░рд╣реА рд╕реЗрд╡рд╛рдПрдБ рд░реЛрдХреЗрдВ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рд╣рдЯрд╛рдПрдБ

docker compose down --volumes

Compose рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╡реЙрд▓реНрдпреВрдо рднреА рд╣рдЯрд╛рдПрдБ

docker compose down --rmi all

Compose рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдЗрдореЗрдЬ рднреА рд╣рдЯрд╛рдПрдБ

docker compose logs рд╕рднреА рдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓реЙрдЧ рджреЗрдЦреЗрдВ
docker compose logs

рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓реЙрдЧ рджрд┐рдЦрд╛рдПрдБ

docker compose logs -f

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рд▓реЙрдЧ рдлрд╝реЙрд▓реЛ рдХрд░реЗрдВ

docker compose logs web

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 рдХрдВрдЯреЗрдирд░ рдореЗрдВ detached рдореЛрдб рдореЗрдВ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ

docker compose build рд╕реЗрд╡рд╛ рдЗрдореЗрдЬ рдмрдирд╛рдПрдБ рдпрд╛ рдкреБрдирдГ рдмрдирд╛рдПрдБ
docker compose build

docker-compose.yml рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рднреА рдЗрдореЗрдЬ рдмрдирд╛рдПрдБ

docker compose build web

рдХреЗрд╡рд▓ web рд╕реЗрд╡рд╛ рдХреА рдЗрдореЗрдЬ рдмрдирд╛рдПрдБ

docker compose build --no-cache

рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрдореЗрдЬ рдмрдирд╛рдПрдБ

docker compose ps рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рдПрдБ
docker compose ps -a

рд╕рднреА рдХрдВрдЯреЗрдирд░ рджрд┐рдЦрд╛рдПрдБ, рдЬрд┐рдирдореЗрдВ рд░реБрдХреЗ рд╣реБрдП рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ

docker compose ps --services

рдХреЗрд╡рд▓ рд╕реЗрд╡рд╛ рдирд╛рдо рджрд┐рдЦрд╛рдПрдБ

docker compose pull рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рд╕реЗрд╡рд╛ рдЗрдореЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб/рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ
docker compose pull web

рдХреЗрд╡рд▓ web рд╕реЗрд╡рд╛ рдХреА рдЗрдореЗрдЬ рдЦреАрдВрдЪреЗрдВ

docker compose pull --ignore-pull-failures

рдХреБрдЫ рдЗрдореЗрдЬ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рднреА рдЬрд╛рд░реА рд░рдЦреЗрдВ

docker compose restart рд╕рднреА рдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ
docker compose restart db

рдХреЗрд╡рд▓ db рд╕реЗрд╡рд╛ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

docker compose restart -t 10

10-рд╕реЗрдХрдВрдб рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛рдПрдБ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

docker compose config рдЕрдВрддрд┐рдо Compose рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди YAML рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдПрдБ
docker compose config --services

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕рднреА рд╕реЗрд╡рд╛рдПрдБ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ

docker compose config --volumes

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рднреА рд╡реЙрд▓реНрдпреВрдо рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ

docker compose start рд░реБрдХреА рд╣реБрдИ рд╕реЗрд╡рд╛рдПрдБ рдХрдВрдЯреЗрдирд░ рдкреБрдирдГ рдмрдирд╛рдП рдмрд┐рдирд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ
docker compose start web

web рд╕реЗрд╡рд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

docker compose start db api

рдПрдХ рд╕рд╛рде рдХрдИ рд╕реЗрд╡рд╛рдПрдБ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

docker compose stop рдХрдВрдЯреЗрдирд░ рд╣рдЯрд╛рдП рдмрд┐рдирд╛ рд╕реЗрд╡рд╛рдПрдБ рд░реЛрдХреЗрдВ
docker compose stop web

web рд╕реЗрд╡рд╛ рд░реЛрдХреЗрдВ

docker compose stop -t 5

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

рдкреНрд░рдЧрддрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдмрд┐рдирд╛ рдЗрдореЗрдЬ рд▓реЛрдб рдХрд░реЗрдВ

docker container export рдХрдВрдЯреЗрдирд░ рдХреА рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ tar рдЖрд░реНрдХрд╛рдЗрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ (рдмрд┐рдирд╛ рдЗрддрд┐рд╣рд╛рд╕ рдпрд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛)
docker export container > file.tar

рдХрдВрдЯреЗрдирд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЖрд░реНрдХрд╛рдЗрд╡ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ

docker export my_container > my_container_fs.tar

рдирд╛рдо рджреНрд╡рд╛рд░рд╛ рдХрдВрдЯреЗрдирд░ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ

docker export -o container_fs.tar container_id

-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

рдорд╛рдирдХ рдЗрдирдкреБрдЯ рд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдВ

ЁЯз╣ рд╕рдлрд╛рдИ рдФрд░ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕

рдХрдорд╛рдВрдб

рдЙрджрд╛рд╣рд░рдг

рд╡рд┐рд╡рд░рдг

docker system df Docker рдбрд┐рд╕реНрдХ рдЙрдкрдпреЛрдЧ рджрд┐рдЦрд╛рдПрдБ: рд╡реЙрд▓реНрдпреВрдо, рдЗрдореЗрдЬ, рдХрдВрдЯреЗрдирд░ рдФрд░ рдмрд┐рд▓реНрдб рдХреИрд╢
docker system df -v

рдкреНрд░рддреНрдпреЗрдХ рдЗрдореЗрдЬ, рдХрдВрдЯреЗрдирд░ рдФрд░ рд╡реЙрд▓реНрдпреВрдо рдХреА рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рдПрдБ

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

рдЬрд╛рдирдХрд╛рд░реА JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдВ

docker system prune рд╕рднреА рдЕрдкреНрд░рдпреБрдХреНрдд Docker рдбреЗрдЯрд╛ рд╣рдЯрд╛рдПрдБ: рд░реБрдХреЗ рд╣реБрдП рдХрдВрдЯреЗрдирд░, рдЕрдкреНрд░рдпреБрдХреНрдд рдиреЗрдЯрд╡рд░реНрдХ, dangling рдЗрдореЗрдЬ рдФрд░ рдмрд┐рд▓реНрдб рдХреИрд╢
docker system prune -a

рдЕрдкреНрд░рдпреБрдХреНрдд рдЗрдореЗрдЬ рд╣рдЯрд╛рдПрдБ, рдЬрд┐рдирдореЗрдВ рдордзреНрдпрд╡рд░реНрддреА рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ

docker system prune --volumes

рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкреНрд░рдпреБрдХреНрдд рд╡реЙрд▓реНрдпреВрдо рд╣рдЯрд╛рдПрдБ

docker image prune рдЕрдкреНрд░рдпреБрдХреНрдд Docker рдЗрдореЗрдЬ рд╣рдЯрд╛рдПрдБ, рдЬрд┐рдирдореЗрдВ dangling рд▓реЗрдпрд░реНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
docker image prune -a

рд╕рднреА рдЕрдкреНрд░рдпреБрдХреНрдд рдЗрдореЗрдЬ рд╣рдЯрд╛рдПрдБ, рдЬрд┐рдирдореЗрдВ dangling рднреА рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ

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

24 рдШрдВрдЯреЗ рд╕реЗ рдкреБрд░рд╛рдиреА рдЗрдореЗрдЬ рд╣рдЯрд╛рдПрдБ

docker container prune рдлрд╝рд┐рд▓реНрдЯрд░ рдорд┐рд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рд░реБрдХреЗ рд╣реБрдП рдХрдВрдЯреЗрдирд░ рд╣рдЯрд╛рдПрдБ рдпрд╛ рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рди рд╣реЛрдВ рддреЛ рд╕рднреА рд╣рдЯрд╛рдПрдБ
docker container prune --filter "until=24h"

24 рдШрдВрдЯреЗ рд╕реЗ рдкреБрд░рд╛рдиреЗ рд░реБрдХреЗ рд╣реБрдП рдХрдВрдЯреЗрдирд░ рд╣рдЯрд╛рдПрдБ

docker container prune --force

рдмрд┐рдирд╛ рдкреБрд╖реНрдЯрд┐ рдХреЗ рд╣рдЯрд╛рдПрдБ

ЁЯРЭ Docker Swarm

рдХрдорд╛рдВрдб

рдЙрджрд╛рд╣рд░рдг

рд╡рд┐рд╡рд░рдг

docker swarm init рд╡рд░реНрддрдорд╛рди рдиреЛрдб рдкрд░ рдирдпрд╛ Docker Swarm рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ
docker swarm init --advertise-addr 192.168.1.100

IP рдкрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

docker swarm init --listen-addr 0.0.0.0:2377

рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реБрдирдиреЗ рд╡рд╛рд▓реЗ рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

docker service create Swarm рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдирдИ рд╕реЗрд╡рд╛ рдмрдирд╛рдПрдБ
docker service create --name nginx nginx

Swarm рдореЗрдВ Nginx рд╕реЗрд╡рд╛ рдмрдирд╛рдПрдБ

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

3 рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛ рдмрдирд╛рдПрдБ

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

рдкреЛрд░реНрдЯ рдореИрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛ рдмрдирд╛рдПрдБ

docker stack deploy Compose рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ Swarm рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рд╕реНрдЯреИрдХ рддреИрдирд╛рдд рдХрд░реЗрдВ
docker stack deploy -c docker-compose.yml mystack

Compose рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕реНрдЯреИрдХ рддреИрдирд╛рдд рдХрд░реЗрдВ

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

рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдлреЙрд░рд╡рд░реНрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рддреИрдирд╛рдд рдХрд░реЗрдВ

docker stack deploy -c swarm-compose.yml mystack

рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ Compose рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

docker stack rm Swarm рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд╕реНрдЯреИрдХ рд╣рдЯрд╛рдПрдБ
docker stack rm mystack

mystack рд╕реНрдЯреИрдХ рд╣рдЯрд╛рдПрдБ

docker stack rm

рд╕рднреА рд╕реНрдЯреИрдХ рд╣рдЯрд╛рдПрдБ (рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ)

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

рд╕реНрдЯреИрдХ рд╣рдЯрд╛рдПрдБ рдФрд░ Swarm рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ

ЁЯТ╝ рдЙрдиреНрдирдд рдбреЙрдХрд░ рдЙрдкрдпреЛрдЧ

ЁЯЪА рдкреНрд░реЛрдлреЗрд╢рдирд▓ Docker рдХрдорд╛рдВрдб

рдХрдорд╛рдВрдб

рдЙрджрд╛рд╣рд░рдг

рд╡рд┐рд╡рд░рдг

docker buildx docker build рдХрд╛ рд╕реНрдерд╛рди рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдЙрдиреНрдирдд рдЗрдореЗрдЬ рдмрд┐рд▓реНрдб рдЯреВрд▓ред рдорд▓реНрдЯреА-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо, рдХреИрд╢рд┐рдВрдЧ, рдкреИрд░реЗрд▓рд▓ рдмрд┐рд▓реНрдб рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╛рд░реВрдкреЛрдВ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред CI/CD рдФрд░ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА
docker buildx build --platform linux/arm64,linux/amd64 -t myimg:multi .

рдорд▓реНрдЯреА-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЗрдореЗрдЬ рдмрдирд╛рдПрдБ (рдПрдХ рд╕рд╛рде ARM рдФрд░ x86)

docker buildx build --load -t localimg .

рдЗрдореЗрдЬ рдмрдирд╛рдПрдБ рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп Docker Engine рдХреИрд╢ рдореЗрдВ рд▓реЛрдб рдХрд░реЗрдВ

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

рдорд▓реНрдЯреА-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЗрдореЗрдЬ рдмрдирд╛рдПрдБ рдФрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкреБрд╢ рдХрд░реЗрдВ

docker context рд░рд┐рдореЛрдЯ рдпрд╛ рдХрдИ рдкрд░рд┐рд╡реЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Docker рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВред рд╕реНрдерд╛рдиреАрдп рдФрд░ рд░рд┐рдореЛрдЯ Docker Engines рдХреЗ рдмреАрдЪ рддреЗрдЬрд╝реА рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо
docker context create myremote --docker "host=ssh://user@host"

рд░рд┐рдореЛрдЯ Docker рд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдмрдирд╛рдПрдБ

docker context use myremote

рд░рд┐рдореЛрдЯ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ

docker context ls

рдЙрдкрд▓рдмреНрдз рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдФрд░ рд╕рдХреНрд░рд┐рдп рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ

docker system events Docker рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рд╕реБрдиреЗрдВ, рдШрдЯрдирд╛ рдкреНрд░рдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде (рдЬреИрд╕реЗ рдХрдВрдЯреЗрдирд░ рдкреНрд░рд╛рд░рдВрдн)ред рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА
docker events --filter 'event=start'

рдХреЗрд╡рд▓ рдХрдВрдЯреЗрдирд░ рдкреНрд░рд╛рд░рдВрдн рдШрдЯрдирд╛рдПрдБ рджрд┐рдЦрд╛рдПрдБ

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

рдкрд┐рдЫрд▓реЗ рдШрдВрдЯреЗ рд╕реЗ 10 рдорд┐рдирдЯ рдкрд╣рд▓реЗ рддрдХ рдХреА рдШрдЯрдирд╛рдПрдБ рджрд┐рдЦрд╛рдПрдБ

docker events --filter 'type=network'

рдХреЗрд╡рд▓ рдиреЗрдЯрд╡рд░реНрдХ-рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдирд╛рдПрдБ рджрд┐рдЦрд╛рдПрдБ

docker events --filter 'image=nginx'

nginx рдЗрдореЗрдЬ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдирд╛рдПрдБ рджрд┐рдЦрд╛рдПрдБ

docker container update рдЪрд▓ рд░рд╣реЗ рдХрдВрдЯреЗрдирд░ рдХреА рд╕рдВрд╕рд╛рдзрди рд╕реАрдорд╛рдПрдБ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрд┐рдирд╛ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдП рдмрджрд▓реЗрдВ
docker update --cpus 2 --memory 1g my_container

рд╕реАрдорд╛ 2 CPU рдФрд░ 1 GB RAM рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ

docker update --restart unless-stopped my_container

рдСрдЯреЛ-рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдиреАрддрд┐ unless-stopped рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ

docker update --pids-limit 200 my_container

рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 200 рддрдХ рд╕реАрдорд┐рдд рдХрд░реЗрдВ

docker container diff рдореВрд▓ рдЗрдореЗрдЬ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдПрдБред рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рдСрдбрд┐рдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА
docker diff my_container

рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рднреА рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░рд┐рд╡рд░реНрддрди рджрд┐рдЦрд╛рдПрдБ

docker diff my_container | grep '^A'

рдХреЗрд╡рд▓ рдЬреЛрдбрд╝реА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЗрдВ рджрд┐рдЦрд╛рдПрдБ (A тАФ Added)

docker image history рдЗрдореЗрдЬ рд▓реЗрдпрд░реНрд╕ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рджрд┐рдЦрд╛рдПрдБ: рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдбреНрд╕, рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдпрд░ рдХрд╛ рдЖрдХрд╛рд░ рдФрд░ рдирд┐рд░реНрдорд╛рдг рд╕рдордпред рдЕрдиреБрдХреВрд▓рди рдФрд░ рдСрдбрд┐рдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА
docker history my_image

рдХрд┐рд╕реА рдЗрдореЗрдЬ рдХрд╛ рд▓реЗрдпрд░ рдЗрддрд┐рд╣рд╛рд╕ рджрд┐рдЦрд╛рдПрдБ

docker history --no-trunc my_image

рдмрд┐рдирд╛ рдХрд╛рдЯреЗ рдкреВрд░реНрдг рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдб рджрд┐рдЦрд╛рдПрдБ

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

рдХреЗрд╡рд▓ рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдбреНрд╕ рдФрд░ рд▓реЗрдпрд░ рдЖрдХрд╛рд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдВ

ЁЯЫа рдЙрдкрдпреЛрдЧреА Docker рдкреНрд░рдерд╛рдПрдБ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рди

  • рдЗрдореЗрдЬ рдЖрдХрд╛рд░ рдХрдо рдХрд░реЗрдВ
    alpine рдпрд╛ scratch рдЬреИрд╕реА рдмреЗрд╕ рдЗрдореЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
    рд▓реЗрдпрд░реНрд╕ рдХреЛ squash рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд┐рд▓реНрдб рдХреЗ рджреМрд░рд╛рди --squash рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╕рдХреНрд╖рдо рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП)ред
    рд╕рд╛рде рд╣реА, рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░ рдХреИрд╢ рдПрдХ рд╣реА рд▓реЗрдпрд░ рдореЗрдВ рд╣рдЯрд╛рдПрдБ:

    RUN apk add --no-cache curl && rm -rf /var/cache/apk/*
  • рд▓реЗрдпрд░реНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рдХрд░реЗрдВ
    рдЕрдВрддрд┐рдо рдЗрдореЗрдЬ рдХрд╛ рдЖрдХрд╛рд░ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ RUN рдореЗрдВ рдХрдИ рдХрдорд╛рдВрдбреНрд╕ рдорд┐рд▓рд╛рдПрдБ:

    RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
  • Dockerfile рдмрд┐рд▓реНрдб рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░реЗрдВ
    рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЕрдВрддрд┐рдо рдЗрдореЗрдЬ рдореЗрдВ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЗрдВ рд░рд╣реЗрдВред
    рдирд┐рд░реНрднрд░рддрд╛ рдкрд╣рд▓реЗ рдХреЙрдкреА рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ, рдлрд┐рд░ рдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВ тАФ рдЗрд╕рд╕реЗ рдХреИрд╢рд┐рдВрдЧ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛ рдФрд░ рд░реАрдмрд┐рд▓реНрдб рддреЗрдЬрд╝ рд╣реЛрдЧрд╛ред

  • рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧ рдЕрд▓рдЧ рдХрд░реЗрдВ
    .env рдлрд╝рд╛рдЗрд▓реЗрдВ, API рдХреБрдВрдЬреА рдпрд╛ рдирд┐рдЬреА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрднреА рднреА рдЗрдореЗрдЬ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рди рдХрд░реЗрдВред
    рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

    • docker secret (Swarm рдореЗрдВ)
    • рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реЗрд░рд┐рдПрдмрд▓ (-e VAR=value рдпрд╛ .env)
    • рдХреЙрдиреНрдлрд╝рд┐рдЧ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рд╡реЙрд▓реНрдпреВрдо

  • рдмрд┐рд▓реНрдб-рдЯрд╛рдЗрдо рд╕реАрдХреНрд░реЗрдЯреНрд╕ (BuildKit)
    рдмрд┐рд▓реНрдб рдХреЗ рджреМрд░рд╛рди рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реАрдХреНрд░реЗрдЯ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --secret рдлрд╝реНрд▓реИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

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

    Dockerfile рдореЗрдВ, рд╕реАрдХреНрд░реЗрдЯ /run/secrets/mysecret рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрддрд╛ рд╣реИ:

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

    ЁЯЫб рдпрд╣ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХреЛ рдЗрдореЗрдЬ рд▓реЗрдпрд░реНрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред

  • рд░реВрдЯрд▓реЗрд╕ рдбреЙрдХрд░
    рд░реВрдЯ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рдмрд┐рдирд╛ Docker рдЪрд▓рд╛рдиреЗ рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдмрдврд╝рддреА рд╣реИ рдФрд░ рд╣реЛрд╕реНрдЯ рд╕рдордЭреМрддрд╛ рдЬреЛрдЦрд┐рдо рдХрдо рд╣реЛрддрд╛ рд╣реИред
    рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

    dockerd-rootless-setuptool.sh install
    export PATH=/usr/bin:$PATH

    рдЬрд╛рдБрдЪреЗрдВ:

    docker info | grep Rootless

    тЪа рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛рдПрдБ (рдЬреИрд╕реЗ, рдкреЛрд░реНрдЯ рдлрд╝реЙрд░рд╡рд░реНрдбрд┐рдВрдЧ <1024) рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдВрдЧреАред

  • рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрдореЗрдЬ рд╕реНрдХреИрди рдХрд░реЗрдВ
    рдмрд┐рд▓реНрдЯ-рдЗрди рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

    docker scan my_image

    рдпрд╛ рдирдпрд╛ CLI:

    docker scout cves my_image

    рдпрд╣ рдмреЗрд╕ рдЗрдореЗрдЬ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

  • рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВ
    рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдореЗрдореЛрд░реА, CPU рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рдХрд░реЗрдВ:

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

    рдпрд╣ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЕрдзрд┐рдХ рдЦрдкрдд рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред
    рдЖрдк I/O рдХреЛ рднреА рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

    docker run --device-read-bps /dev/sda:1mb --device-write-bps /dev/sda:1mb myimage

    рдЙрди рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдЬреЛ рдбрд┐рд╕реНрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЛ рдУрд╡рд░рд▓реЛрдб рдирд╣реАрдВ рдХрд░рдиреЗ рдЪрд╛рд╣рд┐рдПред

  • рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдлрд╛рдИ
    рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрдкреНрд░рдпреБрдХреНрдд рдЗрдореЗрдЬ, рдХрдВрдЯреЗрдирд░, рд╡реЙрд▓реНрдпреВрдо рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рд╣рдЯрд╛рдПрдБ:

    docker system prune -af --volumes

    тЪа рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ: рдпрд╣ рдХрдорд╛рдВрдб рд╕рднреА рдЕрдкреНрд░рдпреБрдХреНрдд рд╕рдВрд╕рд╛рдзрди рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред

    рдЪрдпрдирд╛рддреНрдордХ рд╕рдлрд╛рдИ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

    docker image prune --filter "until=24h"
  • CI/CD рдПрдХреАрдХрд░рдг
    рдмрд┐рд▓реНрдб, рдЯреЗрд╕реНрдЯ рдФрд░ рдбрд┐рдкреНрд▓реЙрдп рдХреЛ GitHub Actions, GitLab CI, Jenkins рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░реЗрдВред
    GitHub Actions рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЪрд░рдг:

    - run: docker build -t myapp:${GITHUB_SHA} .
    - run: docker push myapp:${GITHUB_SHA}
  • рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ
    рд▓реЙрдЧрд┐рдВрдЧ рдбреНрд░рд╛рдЗрд╡рд░реНрд╕ (--log-driver) рдХреЛ рдХреЗрдВрджреНрд░реАрдХреГрдд рд╕рд┐рд╕реНрдЯрдореНрд╕ рд╕реЗ рдЬреЛрдбрд╝реЗрдВ: ELK, Loki, Splunkред
    рдХрдВрдЯреЗрдирд░ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП Prometheus + cAdvisor рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

  • рдкреНрд░реЛрдбрдХреНрд╢рди рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ
    docker-compose.override.yml рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкреНрд░реЛрдбрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧ рд░рдЦреЗрдВред
    рдЙрдЪреНрдЪ рдЙрдкрд▓рдмреНрдзрддрд╛ рдФрд░ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

    • Docker Swarm
    • Kubernetes

ЁЯРЮ Docker рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ

рдХрдорд╛рдВрдб

рдЙрджрд╛рд╣рд░рдг

рд╡рд┐рд╡рд░рдг

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 рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдЯреНрд░реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
nsenter --target $(docker inspect --format '{{.State.Pid}}' my_container) --mount --uts --ipc --net --pid strace -p 1

рдХрдВрдЯреЗрдирд░ namespace рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕ 1 рдХреА рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдЯреНрд░реЗрд╕ рдХрд░реЗрдВ

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

рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдЖрдБрдХрдбрд╝реЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдВ рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ

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 рдХрдВрдЯреЗрдирд░ рдХреА рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЙрд╕рдХреЗ рдмреЗрд╕ рдЗрдореЗрдЬ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╣реБрдП рдмрджрд▓рд╛рд╡ рджрд┐рдЦрд╛рдПрдБ, рдЬрд┐рд╕рдореЗрдВ рдЬреЛрдбрд╝реА рдЧрдИ, рдмрджрд▓реА рдЧрдИ, рдпрд╛ рд╣рдЯрд╛рдИ рдЧрдИ рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
docker diff my_container

рдмреЗрд╕ рдЗрдореЗрдЬ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдмрджрд▓рд╛рд╡ рджрд┐рдЦрд╛рдПрдБ

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 рдФрд░ рдЕрдиреНрдп рд▓реЛ-рд▓реЗрд╡рд▓ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

ЁЯТ╝ рдЙрдиреНрдирдд Docker Compose рдЙрдкрдпреЛрдЧ

ЁЯЪА рдкреЗрд╢реЗрд╡рд░ Docker Compose рдХрдорд╛рдВрдб

рдХрдорд╛рдВрдб

рдЙрджрд╛рд╣рд░рдг

рд╡рд┐рд╡рд░рдг

docker compose up docker-compose.yml рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЬреАрд╡рдирдЪрдХреНрд░ рдкреНрд░рд╛рд░рдВрдн рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ, рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде
docker compose up -d web db

рдХреЗрд╡рд▓ web рдФрд░ db рд╕реЗрд╡рд╛рдПрдБ detached рдореЛрдб рдореЗрдВ рдЪрд▓рд╛рдПрдБ

docker compose up --build

рд╕реЗрд╡рд╛рдПрдБ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрдореЗрдЬ рдкреБрдирдГ рдмрдирд╛рдПрдБ

docker compose up --remove-orphans

рд╡рд░реНрддрдорд╛рди compose рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╣рдЯрд╛рдПрдБ

docker compose build compose рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрдореЗрдЬ рдмрдирд╛рдПрдБ, cache рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░рддрд╛ рдХреЗ рд╕рд╛рде
docker compose build --no-cache

рдмрд┐рдирд╛ cache рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрдореЗрдЬ рдкреБрдирдГ рдмрдирд╛рдПрдБ

docker compose build --parallel

рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдмрдирд╛рдПрдБ рддрд╛рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддреЗрдЬрд╝ рд╣реЛ

docker compose build web

рдХреЗрд╡рд▓ web рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЗрдореЗрдЬ рдмрдирд╛рдПрдБ

docker compose pull рд╕рднреА рдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдЗрдореЗрдЬ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
docker compose pull

рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрдореЗрдЬ рдЦреАрдВрдЪреЗрдВ

docker compose pull db

рдХреЗрд╡рд▓ db рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЗрдореЗрдЬ рдЦреАрдВрдЪреЗрдВ

docker compose pull --ignore-pull-failures

рдЗрдореЗрдЬ рдЦреАрдВрдЪрддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реБрдП рдирд┐рд╖реНрдкрд╛рджрди рдЬрд╛рд░реА рд░рдЦреЗрдВ

docker compose restart рдмрд┐рдирд╛ рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреБрдирдГ рдмрдирд╛рдП рд╕рднреА рдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ
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 variables рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдЕрдВрддрд┐рдо Compose рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдВ
docker compose config

рдорд░реНрдЬ рдХреА рдЧрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди YAML рдлрд╝реЙрд░реНрдореЗрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдПрдБ

docker compose config --services

рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреА рд╕реВрдЪреА рджрд┐рдЦрд╛рдПрдБ

docker compose config --environment

рд╕реЗрд╡рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рднреА environment variables рджрд┐рдЦрд╛рдПрдБ

docker compose watch рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ, рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА
docker compose watch

рдлрд╛рдЗрд▓реЗрдВ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

docker compose events Compose рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реНрдЯреНрд░реАрдо рдХрд░реЗрдВ: рд╕реЗрд╡рд╛ рдкреНрд░рд╛рд░рдВрдн, рд░реЛрдХреЗрдВ, рдЕрдкрдбреЗрдЯ
docker compose events --json

JSON рдлрд╝реЙрд░реНрдореЗрдЯ рдореЗрдВ рдШрдЯрдирд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

docker compose rm рд░реБрдХреА рд╣реБрдИ рд╕реЗрд╡рд╛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╣рдЯрд╛рдПрдБ
docker compose rm web db

web рдФрд░ db рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдХрдВрдЯреЗрдирд░ рд╣рдЯрд╛рдПрдБ

docker compose pause рд╕реЗрд╡рд╛ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд░реЛрдХреЗрдВ
docker compose pause api

api рд╕реЗрд╡рд╛ рдХреЛ рд░реЛрдХреЗрдВ

docker compose unpause рд░реБрдХреА рд╣реБрдИ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд╛рд▓реВ рдХрд░реЗрдВ
docker compose unpause api

api рд╕реЗрд╡рд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд╛рд▓реВ рдХрд░реЗрдВ

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 рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧреА рдЕрднреНрдпрд╛рд╕ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рди

  • рдкрд░реНрдпрд╛рд╡рд░рдг рдкреГрдердХреНрдХрд░рдг
    рдЕрд▓рдЧ-рдЕрд▓рдЧ docker-compose.override.yml рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди environments рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВ тАФ development, staging, productionред рдЗрд╕рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрд▓рдЧ рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдмреАрдЪ рдЯрдХрд░рд╛рд╡ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
    рдЖрдк -f рдлреНрд▓реИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рднреА рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

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

    environment variables рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди .env рдлрд╛рдЗрд▓реЛрдВ (.env.dev, .env.prod, рдЖрджрд┐) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

  • рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реАрдХреНрд░реЗрдЯреНрд╕ рд╕рдВрдЧреНрд░рд╣рдг
    Compose рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ (рдкрд╛рд╕рд╡рд░реНрдб, рдЯреЛрдХрди) рд╕реАрдзреЗ рд╢рд╛рдорд┐рд▓ рди рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

    • .env рдлрд╛рдЗрд▓реЗрдВ environment variables рдХреЗ рд▓рд┐рдП (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ .env рдлрд╛рдЗрд▓реЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдирд╣реАрдВ рд╣реЛрддреАрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ repos рдореЗрдВ commit рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)
    • docker secret рдФрд░ docker config рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП Docker Swarm рдореЗрдВ
    • рд╕реАрдХреНрд░реЗрдЯреНрд╕ рд╡рд╛рд▓реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП external volumes
    • рдмрд╛рд╣рд░реА рд╕реАрдХреНрд░реЗрдЯ рдкреНрд░рдмрдВрдзрди рд╕рд┐рд╕реНрдЯрдо (рдЬреИрд╕реЗ HashiCorp Vault, AWS Secrets Manager)

  • depends_on рдФрд░ healthcheck рдХреЗ рд╕рд╛рде рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреНрд░рдо
    рд╕реЗрд╡рд╛рдУрдВ рдХреЛ dependencies рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╡рд╛рдиреЗ рдХреЗ рд▓рд┐рдП:

    services:
      db:
        image: postgres
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U postgres"]
          interval: 10s
          retries: 5
      api:
        image: my_api
        depends_on:
          db:
            condition: service_healthy
  • рдЕрдкрдбреЗрдЯ рдХреЗ рджреМрд░рд╛рди рдиреНрдпреВрдирддрдо рдбрд╛рдЙрдирдЯрд╛рдЗрдо
    рд╕реЗрд╡рд╛рдПрдБ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд▓рд╛рдПрдБ:

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

    -d рд╡рд┐рдХрд▓реНрдк рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рдЪрд▓рд╛рддрд╛ рд╣реИ, рдФрд░ --remove-orphans рд╡рд░реНрддрдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧреНрд╕ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИред
    рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдкреБрд░рд╛рдиреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░реЛрдХреЗрдВ рдФрд░ рд╣рдЯрд╛рдПрдБ:

    docker compose down --remove-orphans

    рдЗрд╕рд╕реЗ рдирдИ рдЗрдореЗрдЬ рд▓реЛрдб рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдЕрдкреНрд░рдпреБрдХреНрдд рдХрдВрдЯреЗрдирд░ рдмрд┐рдирд╛ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХреЗ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

  • рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╣реЙрдЯ рдХреЛрдб рд░реАрд▓реЛрдбрд┐рдВрдЧ
    volumes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдиреАрдп рдбрд╛рдпрд░реЗрдХреНрдЯрд░реАрдЬрд╝ рдХреЛ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВред рдЗрд╕рд╕реЗ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рддреБрд░рдВрдд рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрдореЗрдЬ рдкреБрдирдГ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред
    рдлрд╝рд╛рдЗрд▓ рдЕрдиреБрдорддрд┐ рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдлрд╛рдЗрд▓рд╕рд┐рд╕реНрдЯрдо caching рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдЦрд╛рд╕рдХрд░ Windows рдФрд░ macOS рдкрд░, рддрд╛рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХреЗред

  • рдмрд┐рдирд╛ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд╣реЙрдЯ рдХреЛрдб рд░реАрд▓реЛрдбрд┐рдВрдЧ (Compose 2.22+)

    develop:
      watch:
        - path: ./src
          action: sync
          target: /app
  • рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдХреЗрдВрджреНрд░реАрдХреГрдд рд▓реЙрдЧрд┐рдВрдЧ
    рдХрдВрдЯреЗрдирд░ рд▓реЙрдЧреНрд╕ рдХреЛ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдФрд░ рд▓реЙрдЧ рдПрдЧреНрд░реАрдЧреЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдЬреИрд╕реЗ ELK Stack, Loki, Prometheus, рдФрд░ Fluentd рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдЕрд▓рд░реНрдЯрд┐рдВрдЧ рд╣реЛ рд╕рдХреЗред
    рдХреЗрдВрджреНрд░реАрдХреГрдд рд▓реЙрдЧ рд╕рдВрдЧреНрд░рд╣рдг рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Docker рд▓реЙрдЧрд┐рдВрдЧ рдбреНрд░рд╛рдЗрд╡рд░реНрд╕ (--log-driver) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
    Compose рдореЗрдВ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧрд┐рдВрдЧ рдбреНрд░рд╛рдЗрд╡рд░реНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:

    services:
      api:
        image: my_api
        logging:
          driver: "json-file"
          options:
            max-size: "10m"
            max-file: "3"
  • рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реЗрд╡рд╛ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн
    docker-compose.yml рдореЗрдВ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдиреАрддрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:

    restart: unless-stopped

    рдЕрдиреНрдп рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдиреАрддрд┐рдпреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

    • no тАФ рдХреЛрдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ)
    • always тАФ рд╣рдореЗрд╢рд╛ рдХрдВрдЯреЗрдирд░ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ
    • on-failure тАФ рдХреЗрд╡рд▓ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдкрд░ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ (рд╡реИрдХрд▓реНрдкрд┐рдХ retry count рдХреЗ рд╕рд╛рде)

    рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ, unless-stopped рд╕реЗрд╡рд╛ рдХреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрддреНрддрдо рд╡рд┐рдХрд▓реНрдк рд╣реИред
    рдпрд╣ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдпрд╛ рд╣реЛрд╕реНрдЯ рд░рд┐рдмреВрдЯ рдХреЗ рдмрд╛рдж рд╕реЗрд╡рд╛рдУрдВ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░рд┐рдХрд╡рд░реА рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред

  • рд╕реЗрд╡рд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓реНрд╕
    рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрд╡рд╛ рд╕рдореВрд╣ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ:

    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 рд╕реЗрд╡рд╛ рдХреЗ рдЕрдВрддрд┐рдо 50 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓реЙрдЧ рджрд┐рдЦрд╛рдПрдБ

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 рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ one-off рдХрдВрдЯреЗрдирд░ рдПрдХ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рд╢реЗрд▓ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

docker container cp рд╣реЛрд╕реНрдЯ рдФрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдмреАрдЪ рдлрд╛рдЗрд▓реЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ
docker cp $(docker compose ps -q db):/dump.sql ./dump.sql

db рд╕реЗрд╡рд╛ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд╣реЛрд╕реНрдЯ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдХреЙрдкреА рдХрд░реЗрдВ

ЁЯТб рдЬрдЯрд┐рд▓ рдорд▓реНрдЯреА-рд╕реЗрд╡рд╛ рд╕реЗрдЯрдЕрдк рдХреА рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рд╕реЗ, 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 рдЪреАрдЯ рд╢реАрдЯ тАФ рдкреВрд░реНрдг рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Docker рдЪреАрдЯ рд╢реАрдЯ:
https://dockerlabs.collabnix.com/docker/cheatsheet/

ЁЯУЧ Docker Hub тАФ рдЗрдореЗрдЬ рдФрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдЬрд╝:
https://hub.docker.com/