Шпаргалка по командам Docker CLI для DevOps инженеров и разработчиков.
Docker — платформа контейнеризации, позволяющая запускать приложения в изолированных контейнерах.
Существуют GUI интерфейсы, например Lazydocker, но лучше использовать Docker CLI.
Проверка Docker #
Версия Docker #
docker --version
Версия Docker Compose #
docker compose version
Информация о системе #
docker info
Посмотреть рабочий каталог #
docker info | grep 'Docker Root Dir'
Работа с контейнерами #
Запустить контейнер #
docker run <image_name>
Команда docker run представляет собой комбинацию команд docker create и docker start
Она создает новый контейнер из указанного образа и запускает его.
Если указанный образ локально отсутствует, то команда docker run загружает образ.
docker run nginx
Запуск в фоне #
docker run -d nginx
Запуск с именем web1 #
docker run --name web1 nginx
Проброс портов #
Параметр -p указывает на соответствие порта на хостовой машине и порта внутри контейнера
docker run -p 8080:80 nginx
Удалить контейнер после остановки #
docker run --rm nginx
Список запущенных контейнеров #
docker ps
Список всех контейнеров #
docker ps -a
Перезапустить контейнер #
docker restart container
Остановить контейнер #
docker stop container
Остановить несколько контейнеров #
docker stop container container2 container3
Остановить все запущенные контейнеры #
$() — конструкция для подстановки результата одной команды в другую.
docker stop $(docker ps -q)
Удалить остановленный контейнер #
docker rm container
Удалить запущенный контейнер #
docker rm -f container
Удалить все контейнеры, включая работающие #
docker rm -f $(docker ps -aq)
Полезные флаги docker run #
Переменные окружения #
docker run -e ENV=prod nginx
Env файл #
docker run --env-file .env nginx
Volume #
docker run -v data:/data nginx
Bind mount #
docker run -v $(pwd):/app nginx
Установить лимит на RAM #
docker run --name web1 --memory 512m nginx
Установить лимит на CPU #
docker run --name web1 --cpus=1 nginx
Изменить лимиты на RAM и CPU #
docker update --cpus=2 --memory=1g web1
Детальная проверка лимитов RAM и CPU #
--memory или -m: Максимальный объем RAM
--memory-swap: Общий лимит памяти + swap
--cpus: Количество ядер CPU (может быть дробным)
--cpu-shares: Относительный вес CPU (по умолчанию 1024)
--cpuset-cpus: Привязка к конкретным ядрам CPU
docker inspect web1 | jq '
.[].HostConfig | {
Memory_MB: (.Memory / 1024 / 1024),
MemorySwap_MB: (.MemorySwap / 1024 / 1024),
CPU_cores: (.NanoCpus / 1000000000),
CpuShares: .CpuShares
}'
Посмотреть использование ресурсов выделенных самим контейнерам #
docker stats
Restart policy #
docker run --restart always nginx
Работа с образами #
Скачать образ #
docker pull nginx
Скачать конкретную версию #
docker pull nginx:1.25
Список образов #
docker images
# или
docker image ls
Удалить образ #
docker rmi IMAGE_ID
Удалить dangling images #
docker image prune
Удалить все неиспользуемые образы #
docker image prune -a
Docker Build #
Сборка образа #
docker build -t myapp .
Сборка с тегом #
docker build -t myapp:1.0 .
Без кеша #
docker build --no-cache -t myapp .
Указать Dockerfile #
docker build -f Dockerfile.prod .
Multi-stage build #
FROM node:20 AS builder
WORKDIR /app
COPY . .
RUN npm install
RUN npm run build
FROM nginx
COPY --from=builder /app/dist /usr/share/nginx/html
Логи и мониторинг #
Логи контейнера #
docker logs container
Следить за логами #
docker logs -f container
Последние строки #
docker logs --tail 50 container
Exec и Debug #
Зайти в контейнер #
docker exec -it container bash
или
docker exec -it container sh
Выполнить команду #
docker exec container ls /
Процессы контейнера #
docker top container
Debug сетевых проблем #
Проверить сеть контейнера #
docker network inspect bridge
Запустить debug контейнер #
docker run -it nicolaka/netshoot
Проверить DNS #
dig google.com
Проверить соединение #
curl http://service
Копирование файлов #
Из контейнера #
docker cp container:/file .
В контейнер #
docker cp file container:/file
Volumes #
Список volumes #
docker volume ls
Создать volume #
docker volume create data
Inspect volume #
docker volume inspect data
Удалить volume #
docker volume rm data
Networks #
Список сетей #
docker network ls
Создать сеть #
docker network create backend
Подключить контейнер #
docker network connect backend container
Inspect network #
docker network inspect backend
Типы сетей Docker #
bridge #
По умолчанию для standalone контейнеров.
host #
Контейнер использует сеть хоста.
docker run --network host nginx
none #
Без сети.
docker run --network none nginx
overlay #
Используется в Docker Swarm.
Docker Registry #
Логин #
docker login
Тег образа #
docker tag myapp username/myapp:latest
Push #
docker push username/myapp
Pull #
docker pull username/myapp
Создание бэкапа и восстановление #
Экспорт контейнера #
docker export container > container.tar
Импорт контейнера #
docker import container.tar image
Сохранить образ #
docker save nginx > nginx.tar
Загрузить образ #
docker load < nginx.tar
Docker System Cleanup #
Удалить остановленные контейнеры #
docker container prune
Удалить volumes #
docker volume prune
Удалить networks #
docker network prune
Полная очистка #
docker system prune -a
Docker Compose #
Запуск сервисов #
docker compose up
В фоне #
docker compose up -d
Пересборка #
docker compose up --build
Остановка #
docker compose down
Логи #
docker compose logs
Список контейнеров #
docker compose ps
Пример docker-compose.yml #
version: "3"
services:
nginx:
image: nginx
ports:
- "8080:80"
redis:
image: redis
postgres:
image: postgres
environment:
POSTGRES_PASSWORD: secret
Полезные alias #
alias dps="docker ps"
alias dpa="docker ps -a"
alias di="docker images"
alias dstop="docker stop $(docker ps -q)"
alias drm="docker rm $(docker ps -aq)"
alias dprune="docker system prune -a"
Best Practices #
Не использовать latest #
❌
docker pull nginx:latest
✔
docker pull nginx:1.25
Использовать маленькие образы #
alpine
distroless
scratch
Использовать multi-stage build #
Это уменьшает размер образа.
Не хранить секреты в образе #
Использовать:
- environment variables
- secrets
- vault
Troubleshooting #
Контейнер сразу падает #
Проверить:
docker logs container
Проверить конфигурацию контейнера #
docker inspect container
Проверить процессы #
docker top container
Документация #
Docker Docs https://docs.docker.com
Docker Hub https://hub.docker.com