Docker

Docker CLI — Global Parameters

Параметр Название Описание
Глобальные параметры CLI
docker Docker CLI Главная CLI-команда Docker. Все остальные команды Docker являются подкомандами этого исполняемого файла. Docker выступает как фасад для управления Docker Engine через REST API. Основные категории: container, image, network, volume, compose, swarm, system. Для просмотра всех доступных подкоманд используйте docker --help. Приоритет выполнения: глобальные флаги → подкоманда → аргументы подкоманды. Пример: docker ps — список контейнеров, docker image ls — список образов, docker volume create mydata — создание volume
docker --config <path> Docker config directory Указывает альтернативный путь к конфигурационному каталогу Docker CLI. По умолчанию используется ~/.docker. Содержит: config.json (учётные данные registry), contexts/ (сохранённые контексты), tls/ (TLS-сертификаты). Полезно для изоляции конфигураций разных окружений (dev/staging/prod). При указании собственного конфига CLI не загружает основной config.json. Пример: docker --config ~/.docker-dev ps — использует конфигурацию из профиля dev. Для создания нового конфига: mkdir ~/.docker-staging && docker --config ~/.docker-staging login. Позволяет хранить отдельные учётные данные для каждого окружения
docker -c <context>, docker --context <context> Docker context Использует определённый Docker context для выполнения команды. Context — это шаблон который хранит информацию о Docker daemon (endpoint, TLS настройки, авторизация). Позволяет переключаться между разными окружениями без изменения环境变量. Список контекстов: docker context ls. Управление: docker context create, docker context use. Встроенные контексты: default (локальный daemon), desktop-linux (Docker Desktop). Пример: docker --context prod ps — показывает контейнеры на production-сервере. Практика: docker context create staging --docker host=ssh://staging@example.com — создаёт контекст для staging-сервера
docker -D, docker --debug Debug mode Включает debug-режим CLI, который выводит подробную отладочную информацию: HTTP-запросы к Docker API, заголовки, тела ответов, тайминги. Полезен при troubleshooting проблем подключения, ошибок API, проблем с TLS. Debug-вывод направляется в stderr, что позволяет перенаправить его в файл. Уровень логирования Docker Engine также можно повысить через /etc/docker/daemon.json с "log-level": "debug". Пример: docker -D build . 2> debug.log — сохранение debug-вывода в файл. Для постоянной активации установите DOCKER_DEBUG=1 в环境变量. Примечание: может раскрыть чувствительные данные (токены, пароли) в выводе
docker -H <host>, docker --host <host> Docker daemon host Подключение к удалённому Docker daemon вместо локального по умолчанию (unix:///var/run/docker.sock). Поддерживаемые протоколы: SSH (ssh://user@host), TCP (tcp://host:port), Unix socket (unix:///path/to/socket), TLS защищённый TCP (tls://host:port). Для безопасного подключения требуется TLS. Пример: docker -H tcp://10.0.0.5:2376 ps — подключение к удалённому daemon. С SSH: docker -H ssh://user@192.168.1.10 ps (использует SSH-туннель). Предупреждение: незашифрованный TCP (port 2375) небезопасен — все данные передаются в открытом виде
docker -l <level>, docker --log-level <level> Log level Устанавливает уровень логирования Docker CLI. Доступные значения (по возрастанию серьёзности): debug (отладка), info (информация, по умолчанию), warn (предупреждения), error (ошибки), fatal (критические ошибки, завершает работу). Влияет только на сообщения CLI — не меняет уровень логирования Docker Engine. Полезно для фильтрации шума при использовании в скриптах CI/CD. Пример: docker --log-level warn ps — показывает только предупреждения и ошибки. Значения также можно установить через переменную DOCKER_LOGLEVEL=debug
TLS параметры
docker --tls TLS connection Включает TLS-шифрование для подключения к Docker daemon. Использует сертификаты из $DOCKER_CERT_PATH или $DOCKER_CONFIG/tls/. Необходим для защищённого удалённого подключения. Без --tlsverify проверка подлинности сервера не выполняется (уязвимость к MITM-атакам). Пример: docker --tls --host tcp://10.0.0.5:2376 ps — подключается с шифрованием. Для генерации сертификатов используйте docker-machine или swarm ca. В Docker Desktop TLS включён по умолчанию
docker --tlsverify TLS verify Включает TLS с обязательной проверкой сертификата сервера (mutual TLS). Проверяет подлинность сервера через CA-сертификат, защищая от spoof-атак. Требует наличие ca.pem в $DOCKER_CERT_PATH. Без этого флага уязвимость к MITM (Man-in-the-Middle). Пример: docker --tlsverify --tlscacert /path/to/ca.pem --host tcp://prod-server:2376 ps. Для двусторонней аутентификации добавьте --tlscert и --tlskey. В продакшене всегда используйте с --tlsverify
docker --tlscacert <path> TLS CA certificate Путь к файлу CA (Certificate Authority) сертификата (ca.pem). Используется для проверки подлинности Docker daemon. Сертификат должен быть подписан доверенным центром сертификации. Обычно генерируется вместе с клиентскими сертификатами. Пример: docker --tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/cert.pem --tlskey /etc/docker/key.pem -H tcp://10.0.0.5:2376 ps. При отсутствии этого флага Docker ищет ca.pem в $DOCKER_CERT_PATH или ~/.docker/tls/. Для Docker Hub: сертификаты загружаются автоматически
docker --tlscert <path> TLS certificate Путь к клиентскому TLS сертификату (cert.pem). Используется для двусторонней аутентификации (mutual TLS) — daemon проверяет подлинность клиента. Совмещается с --tlskey для формирования SSL-сертификата. Пример: docker --tlscert /etc/docker/cert.pem --tlskey /etc/docker/key.pem -H tls://prod:2376 ps. Сертификат должен быть подписан тем же CA, что и daemon. Для генерации: openssl req -newkey rsa:4096 -nodes -sha256 -keyout client.key -out client.csr, затем подпись через CA
docker --tlskey <path> TLS private key Путь к приватному TLS ключу клиента (key.pem). Должен соответствовать клиентскому сертификату из --tlscert. Храните ключ в безопасном месте с правами 600. Пример: docker --tlscert /etc/docker/cert.pem --tlskey /etc/docker/key.pem --tlsverify --tlscacert /etc/docker/ca.pem -H tls://10.0.0.5:2376 ps. При утечке ключа немедленно перегенерируйте все сертификаты. В Docker Desktop ключи управляются автоматически

Docker Core Commands

Команда Название Описание
docker version Docker version Показывает версии Docker CLI и Engine. Выводит информацию о Client и Server частях: версию, API version, Go version, Git commit, дату сборки, состояние клиента/сервера. Полезен для диагностики несовместимости версий. Пример: docker version — показывает полную информацию. Флаг --format для форматирования: docker version --format '{{.Client.Version}}'. Если daemon не запущен, показывает только Client-информацию и ошибку подключения
docker info Docker system info Показывает системную информацию Docker daemon: количество контейнеров, образов, статус swarm, драйверы по умолчанию (storage, network, logging). Полезен для проверки конфигурации и ресурсов. Пример: docker info — полная информация. Ключевые разделы: Server Version, Storage Driver, Security Options, Total Memory, NRPE. Флаг --format для извлечения конкретного поля: docker info --format '{{.ServerVersion}}'. Альтернатива: docker system info — тоже работает
docker help Docker help Выводит справку Docker CLI со списком всех доступных команд и опций. Без аргументов показывает общий help. С аргументом — помощь по конкретной команде. Пример: docker help run — помощь по docker run, docker --help — общий help. Аналог: docker run --help. Также работает: docker help container ls. В интерактивном режиме предлагает автодополнение команд (zsh/bash). Также доступен: docker MANIFEST для просмотра официальной документации
docker login Registry login Авторизация в Docker registry. Сохраняет учётные данные в ~/.docker/config.json для последующих операций pull/push. Пример: docker login — вход в Docker Hub, docker login registry.example.com -u myuser -p mypass — вход в private registry. Флаги: --username, --password (или ввод через stdin для безопасности), --help. Для автоматизации CI: echo "$PASSWORD" | docker login -u "$USER" --password-stdin. Выходные данные не содержат паролей
docker logout Registry logout Выход из registry, удаление сохранённых учётных данных из config.json. Полезен при смене аккаунта или очистке чувствительных данных. Пример: docker logout — выход из Docker Hub, docker logout registry.example.com — выход из конкретного registry. После logout все операции с этим registry потребуют повторной авторизации. Не удаляет TLS-сертификаты или контексты
docker search Search images Поиск образов в Docker Hub. Поддерживает фильтрацию по имени, автору, рейтингу. Пример: docker search nginx — поиск nginx, docker search --filter "stars=100" nginx — только образы с 100+ звёздами. Флаги: --filter (stars, is-automated, is-official), --format (table/raw/go-template), --limit (макс. результатов), --no-trunc. Для программной обработки: docker search --format '{{.Name}}:{{.Tag}}'. Также можно искать в private registry через API
docker inspect Inspect objects Получение low-level JSON информации о контейнере, образе, сети, volume или другом объекте Docker. Возвращает полную конфигурацию и статус. Пример: docker inspect mycontainer — полная информация, docker inspect --format '{{.NetworkSettings.IPAddress}}' mycontainer — только IP-адрес. Типы объектов: container, image, network, volume, service, node. Флаг -f для Go-темплейтов, --type для фильтрации по типу объекта. Полезен для скриптов автоматизации и диагностики проблем
docker events Docker events stream Поток событий Docker daemon в реальном времени. Включает события создания/удаления контейнеров, изменения состояния, network, volume. Пример: docker events — поток событий, docker events --filter 'type=container' --filter 'event=start' — только старт контейнеров. Флаги: --filter (multiplex), --since (дата/время), --until, --format. Полезен для мониторинга, автоматизации, логирования. Для фильтрации в скрипте: docker events --filter 'image=nginx' | grep start
docker system Docker system management Управление Docker system: очистка, мониторинг disk space, информация. Подкоманды: df (аналог df -h), prune (очистка неиспользуемых объектов), info (системная информация). Пример: docker system df — использование диска, docker system prune -a — удаление всех неиспользуемых объектов. Для очистки мусора: docker system prune --volumes (включая volumes). Полезно для освобождения места на диске и поддержания системы в чистоте
docker context Docker contexts Управление contexts для переключения между разными Docker daemon. Подкоманды: create (создать), inspect (просмотр), rm (удалить), use (активировать), update (обновить). Пример: docker context create prod --docker host=tcp://10.0.0.5:2376. По умолчанию есть контексты: default (локальный Docker), desktop-linux (Docker Desktop). Контексты хранятся в ~/.docker/contexts/. Полезен для работы с несколькими окружениями
docker init Initialize project Интерактивная генерация starter Docker-файлов для проекта: Dockerfile, docker-compose.yml, .dockerignore. Автоматически определяет тип проекта (Node.js, Python, Go, Java и др.) и создаёт оптимизированные файлы. Пример: docker init — в текущей директории, docker init --mode complete — без вопросов. Создаёт: Dockerfile (с multi-stage build), docker-compose.yml (с сервисами), .dockerignore, .env. Также можно указать image: docker init --image nginx. Документация: docker init docs
docker debug Container debugging Debug shell для container/image. Запускает интерактивную сессию отладки контейнера с доступом к файловой системе и инструментам. Пример: docker debug mycontainer — отладка контейнера, docker debug ubuntu — отладка образа. Запускает nerdctl — альтернативный клиент с расширенными возможностями. Включает доступ к strace, ltrace, gdb для глубокой диагностики. Полезен для исследования содержимого образов и контейнеров
docker buildx Buildx builder Расширенный BuildKit builder с поддержкой multi-arch build, cache management, и CI интеграцией. Это современный способ сборки образов Docker. Пример: docker buildx build --platform linux/amd64,linux/arm64 -t myapp:latest . — сборка multi-arch. Подкоманды: build (сборка), ls (список builders), create (создать builder), inspect, rm, use, prune. BuildKit обеспечивает кэширование слоёв, секрет-переменные, SSH-forwarding, cache export. Документация: BuildKit docs
docker builder Build management Управление builder instances. Позволяет создавать, настраивать и удалять instances BuildKit builder для разных задач. Пример: docker builder ls — список builders, docker builder create mybuilder --driver docker-container. Подкоманды: ls, create, inspect, rm, prune, use, update. Полезен для изоляции процессов сборки, управления ресурсами и оптимизации build pipeline. Альтернатива: docker buildx

Docker Container Commands

Команда Название Описание
docker container ls List containers Список запущенных контейнеров. Аналог docker ps. Флаги: -a (все контейнеры), -n (последние N), --filter (по статусу, имени, сети и др.), --format (формат вывода). Пример: docker container ls — только запущенные, docker container ls -a — все, docker container ls --filter "status=running" — только running. Вывод: CONTAINER ID, IMAGE, COMMAND, CREATED, STATUS, PORTS, NAMES. Полезен для мониторинга текущих контейнеров и диагностики проблем
docker container ls -a List all containers Список всех контейнеров включая stopped и созданные. Показывает полный статус: Created, Running, Paused, Exited, Dead. Полезен для очистки неиспользуемых контейнеров или поиска удалённых. Пример: docker container ls -a --filter "status=exited" — только остановленные. Флаг --size показывает размер файлов данных контейнера. Можно комбинировать с docker rm для очистки: docker container ls -a --filter "status=exited" -q | xargs docker rm
docker container run Run container Создание и запуск контейнера. Создает новый экземпляр из образа с заданной конфигурацией. Пример: docker container run --name web -p 8080:80 -d nginx. Основные флаги: -d (detach), -it (interactive TTY), --name, -p (ports), -v (volumes), -e (env), --network, --restart, --memory, --cpus. Порядок флагов важен: глобальные → run-специфичные → образ → команда. Если образ не найден локально, автоматически выполняет docker pull. Для запуска в фоне используйте -d, для интерактивного доступа -it
docker container create Create container Создание контейнера без запуска. Полезен для настройки конфигурации перед запуском, тестирования образов, создания скриптов. Пример: docker container create --name mycontainer -v /data:/data nginx. Контейнер можно запустить позже: docker container start mycontainer. Возвращает ID контейнера. Можно inspect конфигурацию: docker container inspect mycontainer. Полезен в CI/CD для создания базовых образов с настроенными volumes и networks
docker container start Start container Запуск ранее созданного или остановленного контейнера. Пример: docker container start mycontainer — обычный запуск, docker container start -a mycontainer — с подключением вывода, docker container start -i mycontainer — интерактивный запуск. Флаг --attach подключает stdout/stderr, --interactive — stdin. Можно запустить несколько контейнеров: docker container start c1 c2 c3. Для автоматического запуска при старте системы используйте --restart при создании контейнера
docker container stop Stop container Остановка контейнера с отправкой SIGTERM сигнала. Контейнер получает время на graceful shutdown (по умолчанию 10 секунд, затем SIGKILL). Пример: docker container stop mycontainer, docker container stop -t 30 mycontainer — 30 секунд на shutdown. Флаг --time задаёт таймаут. Можно остановить несколько: docker container stop $(docker container ls -q). После stop контейнер остаётся — для удаления используйте docker rm. В продакшене всегда используйте stop вместо kill
docker container restart Restart container Перезапуск контейнера: stop + start. Полезен для применения изменений конфигурации без удаления контейнера. Пример: docker container restart mycontainer, docker container restart -t 30 mycontainer. Флаг --time задаёт таймаут на graceful shutdown. Можно перезапустить несколько: docker container restart $(docker container ls -q --filter "name=web"). При использовании с --restart=always или --restart=unless-stopped контейнер автоматически перезапускается при сбоях
docker container rm Remove container Удаление контейнера. Контейнер должен быть остановлен (или используйте -f). Пример: docker container rm mycontainer, docker container rm -f mycontainer — принудительное удаление. Флаги: -f (force), -v (удалить volumes), --link (удалить link). Можно удалить несколько: docker container rm c1 c2 c3. Для очистки всех stopped контейнеров: docker container prune. Внимание: удаление необратимо — все данные вне volumes будут потеряны
docker container exec Execute command Выполнение команды внутри запущенного контейнера. Полезен для отладки, запуска дополнительных процессов, выполнения скриптов. Пример: docker container exec -it mycontainer bash — интерактивная сессия, docker container exec mycontainer ls -la /app — выполнить команду. Флаги: -i (stdin), -t (TTY), -u (пользователь), --env, --workdir. Для фоновых процессов без -it: docker container exec mycontainer touch /tmp/file.txt. Можно выполнить любую команду, установленную в образе
docker container logs Container logs Просмотр логов контейнера. Выводит stdout/stderr контейнера. Пример: docker container logs mycontainer — последние логи, docker container logs -f mycontainer — follow режим (tail -f), docker container logs --tail 100 mycontainer — последние 100 строк. Флаги: -f (follow), --tail (количество строк), --since (время), --timestamps (timestamps). Для просмотра логов с ошибкой: docker container logs mycontainer 2>&1 | grep -i error. Для контейнеров с --restart=always логи хранятся в /var/lib/docker/containers/
docker container top Running processes Список процессов контейнера. Аналог ps aux внутри контейнера. Пример: docker container top mycontainer. Вывод: PID, PPID, USER, CMD. Полезен для мониторинга ресурсов контейнера и обнаружения необычных процессов. Флаги зависят от ОС: Unix — -l (пакеты), Windows — -l (библиотеки). Альтернатива для детальной информации: docker container stats mycontainer или docker exec mycontainer ps aux
docker container stats Resource usage Мониторинг CPU/RAM usage контейнеров в реальном времени. Пример: docker container stats — все контейнеры, docker container stats mycontainer — один контейнер, docker container stats --no-stream — одноразовый вывод. Показывает: CONTAINER, CPU %, MEM USAGE/LIMIT, NET I/O, BLOCK I/O, PIDs. Для мониторинга в скрипте: docker container stats --no-stream --format "{{.Name}}: {{.CPUPerc}}". Показывает сетевой и блочный ввод/вывод. Полезен для определения bottlenecks и оптимизации ресурсов
docker container cp Copy files Копирование файлов между host и container. Пример: docker container cp mycontainer:/app/config.yml ./config.yml — из контейнера, docker container cp ./file.txt mycontainer:/tmp/ — в контейнер. Флаги: -a (archive mode), -L (follow symlinks). При копировании директории: docker container cp ./dir mycontainer:/tmp/. Для создания архива внутри: docker container cp mycontainer:/app .. Работает со stop-контейнерами. Для копирования файлов из образа (до создания контейнера) используйте docker create + docker cp + docker rm
docker container rename Rename container Переименование контейнера. Полезен для изменения имени без пересоздания контейнера. Пример: docker container rename old_name new_name. Контейнер сохраняет всю конфигурацию, IP-адрес (в сети), volumes. Нельзя переименовать в существующее имя. Работает только с running и stop контейнерами. Альтернатива в docker-compose: name или container_name в yaml. Не влияет на hostname контейнера (устанавливается через --hostname)
docker container pause Pause container Приостановка контейнера с помощью cgroups freezer. Все процессы контейнера приостанавливаются в текущем состоянии. Пример: docker container pause mycontainer. Полезен для создания консистентных снапшотов, временной остановки без потери данных. Для возобновления: docker container unpause mycontainer. Нельзя выполнять команды в paused контейнере (exec не работает). Данные в файловой системе и памяти сохраняются в момент паузы. Альтернатива: kill -STOP внутри контейнера
docker container unpause Unpause container Возобновление работы приостановленного контейнера. Все процессы продолжают выполнение с точки паузы. Пример: docker container unpause mycontainer. Контейнер продолжает использовать ресурсы, как будто не был приостановлен. Точное время остановки = время возобновления (без потери выполнения). Можно возобновить только ранее paused контейнеры
docker container kill Kill container Принудительное завершение контейнера. Отправляет сигнал SIGKILL (по умолчанию) процессам контейнера. Пример: docker container kill mycontainer, docker container kill -s SIGINT mycontainer — отправить SIGINT. Флаг --signal позволяет выбрать сигнал: SIGINT, SIGTERM, SIGKILL и др. В отличие от stop — нет graceful shutdown, контейнер завершается мгновенно. Используйте только когда stop не помог. Может привести к потере данных или повреждению файловой системы
docker container wait Wait container Ожидание завершения контейнера. Блокирует выполнение до exit контейнера и возвращает код выхода. Пример: docker container wait mycontainer — ожидает и возвращает exit code. Можно ожидать несколько: docker container wait c1 c2 c3. Полезен в скриптах для синхронизации: docker run --rm myimage & CID=$!; docker wait $CID; echo "Exit: $?". Используется в Docker Compose для depends_on логики. Контейнер может быть running или created
docker container prune Remove stopped containers Удаление всех остановленных контейнеров. Безопасно — удаляет только контейнеры со статусом Exited или Dead. Пример: docker container prune — с подтверждением, docker container prune -f — без подтверждения. Флаг --filter для фильтрации: docker container prune --filter "until=24h" — удалить контейнеры остановленные 24ч назад. Не удаляет контейнеры с привязанными volumes (по умолчанию). Альтернатива: docker rm $(docker ps -aq --filter "status=exited"). Рекомендуется для регулярной очистки

docker run — Main Parameters

Параметр Название Описание
-d, --detach Detached mode Запуск контейнера в фоне (detached). Возвращает ID контейнера в stdout сразу после запуска. Контейнер продолжает работать после закрытия терминала. Пример: docker run -d --name web nginx. Без -d контейнер работает в foreground и блокирует терминал. Для управления detached контейнером: docker logs -f для логов, docker attach для подключения. Не работает с --rm в некоторых версиях Docker. Для мониторинга: docker stats
-it Interactive terminal Интерактивный TTY режим. Комбинация -i (interactive — открывает stdin) + -t (tty — выделяет псевдотерминал). Позволяет взаимодействовать с контейнером как с обычным shell. Пример: docker run -it ubuntu bash — интерактивный bash внутри контейнера, docker run -it alpine — sh без аргумента. Для отключения вывода логов без -d: -i. Для подключения к running контейнеру: docker exec -it mycontainer bash. Без -t не будет цветного вывода и работы терминала
--name <name> Container name Именованный контейнер вместо случайного ID. Имя используется для ссылок в Docker Compose и network, для удобного управления. Пример: docker run --name my-web -d nginx, docker stop my-web. Имя должно быть уникальным — нельзя создать контейнер с существующим именем. Для проверки: docker ps --filter "name=my-web". Можно изменить: docker rename. В docker-compose имя определяется сервисом автоматически. Имена не могут содержать / и начинаются с буквы или символа
-p <host-ip:host-port:container-port>, --publish <host-ip:host-port:container-port> Port mapping Проброс портов с хоста в контейнер. Позволяет сделать сервис внутри контейнера доступным извне. Пример: -p 8080:80 — доступ к порту 80 контейнера через порт 8080 хоста, -p 127.0.0.1:8080:80 — только локальный доступ. Синтаксис: [-p ip:hostPort:containerPort | hostPort:containerPort]. Поддерживаемые протоколы: -p 8080:80/tcp, -p 53:53/udp. Множественные порты: -p 8080:80 -p 8443:443. Проблемы: порт может быть занят (netstat -tulpn), права (<1024)
-P Publish all ports Автоматический publish всех EXPOSE портов из Dockerfile на случайных портах хоста. Полезен для тестирования и временного доступа. Пример: docker run -P myapp, затем проверить: docker port mycontainer. Каждому порту назначается случайный высокий порт. Если в Dockerfile EXPOSE 80 443, то будут маппины оба. Для проверки: docker inspect --format '{{range $p, $_ in .Config.ExposedPorts}}{{$p}} {{end}}' container. Порт может конфликтовать — если занят, назначается другой
-v <source>:<destination>[:ro], --volume <source>:<destination>[:ro] Mount volume Mount host path/volume в контейнер. Данные сохраняются после удаления контейнера. Типы: named volume, bind mount, tmpfs. Примеры: -v data:/var/lib/data (named volume — создаётся автоматически), -v ~/.ssh:/root/.ssh:ro (bind mount с read-only), -v /host/path:/container/path (bind mount). Флаги: :ro (read-only), :Z (SELinux), (SELinux shared). Bind mount зависит от ОС, named volume переносимый. Данные bind mount могут потребовать правильных прав доступа (UID/GID)
--mount type=<bind|volume|tmpfs>,src=<name>,dst=<path> Advanced mount Современный mount syntax. Более читаемый и надёжный чем -v. Типы: bind (хост-путь), volume (named volume), tmpfs. Примеры: --mount type=volume,src=data,dst=/var/lib/data — named volume, --mount type=bind,src=/etc/ssl,dst=/etc/ssl,readonly — bind mount, --mount type=tmpfs,dst=/tmp,tmp-size=50M — tmpfs. Флаги: readonly, volumeopt=key=value для volume options. Разделяет источник и цель — позволяет создать volume без хост-пути. Труднее для чтения при множестве mount
-e <KEY>=<VALUE>, --env <KEY>=<VALUE> Environment variable Передача env variables в контейнер. Переопределяет ENV из Dockerfile. Пример: -e DB_HOST=postgres -e DB_PORT=5432. Можно передать переменные из host: -e $(printenv | grep DB_). Флаг --env-file загружает из файла. Важно для конфигурации приложений без пересборки образа. Переменные доступны внутри как обычные环境变量. Не используйте для паролей в команде (видно в ps) — используйте --env-file или secrets. Поддерживает типизацию через int/float конверсию в приложении
--env-file <path> Environment file Загрузка env variables из файла. Каждая строка файла: KEY=VALUE или KEY (берётся из host). Удобно для хранения чувствительных данных и большой конфигурации. Пример: --env-file .env, --env-file config/database.env. Файл формат: DB_HOST=postgres, DB_PORT=5432, # comment. .env файлы обычно включаются в .dockerignore. Приоритет: -e > --env-file > Dockerfile ENV. Переменные из файла переопределяют системные环境变量
--restart <policy> Restart policy Политика рестарта контейнера после остановки. Значения: no (never, по умолчанию), on-failure[:max-retries] (при ошибке), always (всегда), unless-stopped (всегда кроме ручного stop). Пример: --restart unless-stopped — автоматически перезапускает кроме ручного stop. --restart on-failure:5 — максимум 5 попыток. Важно для продакшен — обеспечивает отказоустойчивость. Работает при перезагрузке хоста. Не работает с --rm. Проверить: docker inspect --format '{{.HostConfig.RestartPolicy.Name}}' container. В docker-compose: restart: always
--network <network> Network selection Подключение к Docker network. Типы: bridge (по умолчанию), host (общий с хостом), none (без сети), имя кастомной сети. Пример: --network my-net, --network host (порт не нужен), --network none (изолированная). Для связи контейнеров используйте кастомные сети — DNS-имя = имя сервиса. Контейнеры на default bridge не могут резолвить имена друг друга. Для мультихост: --network=overlay в swarm. Альтернатива: --network-alias для дополнительных имён
--ip <IP> Static IP Статический IP адрес для контейнера. Работает только с custom bridge network (не с default bridge). Пример: --ip 172.20.0.100 --network my-net. IP должен принадлежать подсети сети. Если IP занят — ошибка. Полезен для приложений требующих фиксированный IP (лицензирование, firewalls). Проверка: docker inspect --format '{{.NetworkSettings.Networks.my-net.IPAddress}}' container. По умолчанию Docker назначает случайный IP из пула
--hostname <name> Hostname Hostname контейнера. Устанавливает имя хоста внутри контейнера. Влияет на hostname команду и /etc/hostname. Пример: --hostname myserver. По умолчанию используется ID контейнера (первые 12 символов). Полезен для приложений, которые используют hostname для идентификации. Изменяет только внутренний hostname — не DNS в сети. В docker-compose определяется hostname. Для изменения в running контейнере: docker exec hostname newname
--dns <IP> DNS server DNS server внутри контейнера. Переопределяет DNS из Docker daemon config. Пример: --dns 8.8.8.8 --dns 8.8.4.4 — Google DNS, --dns 1.1.1.1 — Cloudflare DNS. Можно указать до 3 DNS серверов. Полезен для внутренних DNS (CoreDNS, BIND). Проверка: docker exec container cat /etc/resolv.conf. Для поиска в Docker network: --dns-search example.com. Если DNS не настроен, используется DNS хоста (/etc/resolv.conf). Работает только при создании контейнера
--memory <size> Memory limit Ограничение RAM контейнера. Поддерживаемые суффиксы: b, k, m, g. Пример: --memory 512m, --memory 2g, --memory 1024k. Без ограничения — полный доступ к RAM хоста. При превышении контейнер может быть убит OOM killer. Для swap: --memory-swap (должен быть ≥ --memory). Для совместимости: --oom-kill-disable (не рекомендуется). Проверка: docker stats. Для production: всегда устанавливайте --memory для стабильности. В swarm: deploy.resources.reservations.memory
--cpus <count> CPU limit Ограничение CPU ресурсов контейнера. Пример: --cpus 1.5 — 1.5 ядра, --cpus 4 — 4 ядра. По умолчанию контейнер использует все доступные CPU. Значение может быть дробным для тонкой настройки. Для ограничения specific cores: --cpuset-cpus "0,1". Проверка: docker stats, docker top. В docker-compose: cpus: 1.5. Работает с cgroups v1/v2. Альтернатива: --cpu-shares (relative weight)
--privileged Privileged mode Повышенные привилегии: контейнер получает доступ ко всем устройствам хоста, отключает security-ограничения (AppArmor, seccomp, capabilities). Использовать только для специальных случаев (Docker-in-Docker, отладка). Пример: docker run --privileged myimage. Безопасность: контейнер может стать root на хосте. Для ограниченных привилегий: --cap-add вместо. В swarm: privileged: true в service config. Всегда оценивайте риски использования
--user <UID>[:<GID>] User inside container Запуск под определённым UID/GID вместо UID 0 (root по умолчанию). Пример: --user 1000:1000, --user nobody. Полезен для безопасности и доступа к mounted volumes с правильными правами. Если не указано — используется образ (Dockerfile USER). Проверка: docker exec id. В docker-compose: user: "1000:1000". Для образов без USER директивы — по умолчанию root
--workdir <path> Working directory Working directory внутри контейнера. Переопределяет WORKDIR из Dockerfile. Пример: --workdir /app. Аналог cd при старте контейнера. Все относительные пути в команде будут от workdir. Полезен для организации структуры файлов. В docker-compose: workdir: /app. Нельзя использовать в ENTRYPOINT — используется при запуске команды. Проверяет существование директории
--rm Auto remove Автоматическое удаление контейнера после остановки. Удобно для одноразовых задач. Пример: docker run --rm myimage command. Не работает с -d и -it вместе — контейнер удалится сразу. Полезен в CI/CD и скриптах: docker run --rm postgres:15 psql -h db -c "SELECT 1". Контейнер не отображается в docker ps -a. Для сохранения результата используйте volumes. После --rm контейнер можно inspect только во время выполнения
--platform <os/arch[/variant]> Target platform Multi-arch platform для сборки/запуска на определённой архитектуре. Пример: --platform linux/amd64, --platform linux/arm64. Полезен для кросс-платформенной разработки и эмуляции. При pull/build определяет архитектуру образа. Для списка доступных: docker buildx ls --drivers. Ошибка при несовместимости: No matching manifest. В CI: --platform для проверки на разных архитектурах. Также: DOCKER_DEFAULT_PLATFORM环境变量
--health-cmd <command> Healthcheck command Команда для проверки здоровья контейнера. Возврат 0 = healthy, 1 = unhealthy. Пример: --health-cmd "curl -f http://localhost/ || exit 1", --health-cmd "pg_isready". Проверки запускаются после --health-interval. Статус можно проверить: docker inspect --format '{{.State.Health.Status}}' container. По умолчанию disabled. Для Dockerfile: HEALTHCHECK CMD curl -f http://localhost/ || exit 1. Полезен в swarm и docker-compose для автоматического перезапуска
--health-interval <duration> Healthcheck interval Интервал healthcheck проверок. Пример: --health-interval 30s, --health-interval 5m. Также: --health-timeout (timeout для каждой проверки), --health-retries ( retries для unhealthy). По умолчанию 0s (отключено). Полный пример: --health-cmd "curl -f http://localhost/" --health-interval 30s --health-timeout 10s --health-retries 3. В docker-compose: healthcheck: { test, interval, timeout, retries }
--entrypoint <command> Override entrypoint Замена ENTRYPOINT из Dockerfile. Полезен для запуска контейнера с другой основной командой. Пример: --entrypoint bash для запуска в bash вместо команды образа, --entrypoint "" — очистка entrypoint. В docker-compose: entrypoint: /bin/bash. Entry point + CMD = полная команда запуска. Override только entry point, CMD из образа сохраняется. Для очистки CMD: --entrypoint "" --command "new command". Entry point выполняется как PID 1

Docker Image Commands

Команда Название Описание
docker image ls List images Список всех локальных образов. Флаги: -a (все слои, включая промежуточные), --filter (by label, digest, creator), --format (table/raw/go-template), --no-trunc. Пример: docker image ls — основные образы, docker image ls -a — все, docker image ls --filter "dangling=true" — dangling images. Вывод: REPOSITORY, TAG, IMAGE ID, CREATED, SIZE. Для поиска конкретного: docker image ls --format '{{.Repository}}:{{.Tag}}' | grep nginx. Полезен для аудита и очистки дискового пространства
docker image pull Pull image Загрузка образа из registry (Docker Hub, private registry). Пример: docker image pull nginx — latest тег, docker image pull nginx:1.25 — конкретная версия, docker image pull registry.example.com/myapp:v1. Поддерживает digest: docker image pull nginx@sha256:... для точной версии. Флаги: --platform (архитектура), --all-tags (все теги). При pull загружает слои параллельно. Для ускорения: настройте mirror в /etc/docker/daemon.json. Если образ уже есть — проверяется digest, не загружается повторно
docker image push Push image Отправка образа в registry. Требуется авторизация (docker login). Пример: docker image push myapp:v1, docker image push registry.example.com/myapp:latest. Сначала создаётся tag: docker image tag myapp:v1 registry.example.com/myapp:v1. Push загружает слои инкрементально —unchanged слои не перезагружаются. Для multi-arch: docker buildx build --push --platform .... Rate limiting Docker Hub: 100 pull/6h (anonymous), 200 (authenticated). Private registry требует HTTPS или --insecure-registry
docker image build Build image Сборка образа из Dockerfile. Аналог docker build. Пример: docker image build -t myapp:v1 .. Флаги: -t (тег), -f (Dockerfile path), --build-arg, --network, --cache-from. По умолчанию ищет Dockerfile в текущей директории. Результат — локальный образ с указанным тегом. Для multi-stage build: --target production. Build cache ускоряет повторные сборки. Для очистки после: docker image prune. Альтернатива: docker buildx build для расширенных возможностей
docker image rm Remove image Удаление образа из локальной системы. Пример: docker image rm myapp:v1, docker image rm nginx alpine myapp — несколько. Флаги: -f (force), --no-prune. Нельзя удалить образ, используемый running контейнером (используйте -f). Для dangling образов: docker image rm $(docker image ls -q --filter "dangling=true"). Если образ имеет tagged parents — удалится только tag. Для очистки мусора: docker image prune -a. Удаление больших образов освобождает значительное место
docker image prune Remove unused images Очистка dangling images (без тегов). Без флагов удаляет только dangling. Пример: docker image prune — dangling, docker image prune -a — все неиспользуемые, docker image prune --all. Флаг --filter для условий: docker image prune --filter "until=24h". Флаг -f без подтверждения. Удаляет образа, не используемые ни одним контейнером. Включает промежуточные слои. Используйте с осторожностью — могут понадобиться для rebuild. Альтернатива: docker system prune — полная очистка
docker image inspect Inspect image JSON информация образа. Показывает полную конфигурацию: архитектуру, CMD, Env, Volumes, Created time и др. Пример: docker image inspect nginx — массив, docker image inspect --format '{{.Config.Cmd}}' nginx. Полезные поля: .Architecture, .Config.ExposedPorts, .ContainerConfig, .RootFS.Layers. Для получения ID: docker image inspect --format '{{.Id}}' nginx. Для слоёв: docker image inspect --format '{{.RootFS.Layers}}' nginx. Можно использовать в скриптах для автоматизации
docker image history Image history История слоёв образа. Показывает команды Dockerfile, которые создали каждый слой. Пример: docker image history nginx, docker image history --no-trunc nginx. Вывод: IMAGE, CREATED, CREATED BY, SIZE. Полезен для анализа размера образа и понимания его сборки. LARGE слои видны в колонке SIZE. Для конкретного слоя: docker image history --format '{{.ID}}: {{.CreatedBy}}' nginx. Если Dockerfile не сохранён — можно восстановить из history. Альтернатива: docker buildx debug для интерактивного исследования
docker image tag Tag image Создание tag для образа. Не создаёт копию — только ссылку. Пример: docker image tag myapp:v1 myapp:latest, docker image tag myapp:v1 registry.example.com/myapp:v1. Синтаксис: docker image tag SOURCE[:TAG] TARGET[:TAG]. Полезен для версионирования, перемещения в registry. Tag можно изменить: docker image tag снова. Для удаления: docker image rm target:tag. Tag не влияет на размер образа — это lightweight ссылка
docker image save Save image Экспорт образа в tar архив. Полезен для переноса между машинами без registry. Пример: docker image save -o myimage.tar myapp:v1, docker image save myapp:v1 nginx:alpine | gzip > images.tar.gz — несколько образов. Флаги: -o (output), --output. Полученный tar можно скопировать и загрузить на другой машине. Содержит все слои, metadata, history. Размер = сумма всех слоёв. Для сжатия используйте gzip или docker save | gzip. Не сохраняет volumes
docker image load Load image Импорт образа из tar архива. Аналог docker load. Пример: docker image load -i myimage.tar, docker image load < myimage.tar. Загружает все образы из архива. После load можно проверить: docker image ls. Для сжатого архива: gzip -d < myimage.tar.gz | docker load. Tags сохраняются из архива. Images без tags появятся как . Не заменяет registry — для CI/CD используйте registry

Docker Build Commands

Параметр Название Описание
docker buildx build BuildKit build Современная сборка BuildKit с расширенными возможностями. Поддерживает multi-arch, cache export, secrets, SSH forwarding. Пример: docker buildx build --platform linux/amd64,linux/arm64 -t myapp:latest --push .. Это рекомендуемый способ сборки Docker. Features: параллельная сборка слоёв, прогрессивный вывод, интеграция с GitHub Actions. Для активации: export DOCKER_BUILDKIT=1. Альтернатива: docker build (legacy builder). BuildKit использует docker-buildkit daemon для изоляции
--platform <os/arch[/variant]> [, <os/arch[/variant]>...] Multi-platform build Сборка multi-arch images. Пример: --platform linux/amd64,linux/arm64. Результат — manifest list (multi-arch image). Полезен для поддержки разных архитектур в одном образе. При push создаётся manifest с несколькими архитектурами. Pull без --platform выберет архитектуру хоста. Для настройки: docker buildx create --use builder с support для multiple platforms. Ошибка при несовместимости слоёв. В GitHub Actions: --platform linux/amd64,linux/arm64
--push Push after build Push image в registry сразу после build. Аналог docker buildx build --push. Пример: docker buildx build --platform linux/amd64 -t myapp:latest --push .. Полезен в CI/CD — одна команда для build + push. Требует docker login. Без --push образ остаётся локально. Для нескольких тегов: -t v1.0 -t latest --push. Push идёт слой за слоем — unchanged слои не перезагружаются. Для debug: уберите --push и проверьте локально
--load Load into local daemon Load image локально после build. Для buildx загружает только текущую платформу (в отличие от --push с multi-arch). Пример: docker buildx build --load -t myapp:latest .. Полезен когда нужен образ локально без отдельного docker image save/load. Загружает в стандартный Docker daemon. Быстрее чем --push + pull. Для multi-arch + local: используйте --load с одной платформой
--cache-from type=<inline|registry|local>,ref=<ref> Build cache source Использование build cache из другого образа. Ускоряет сборку переиспользуя предыдущие слои. Пример: --cache-from type=registry,ref=myapp:cache, --cache-from type=inline. Типы: inline (в image manifest), registry (remote image), local (local directory). Полезен в CI для кэширования между runs. Работает с --cache-to для полного цикла. Cache можно посмотреть: docker buildx du. Без cache — полная пересборка
--cache-to type=<inline|registry>,dest=<dest> Export build cache Экспорт build cache для повторного использования. Пример: --cache-to type=inline,dest=myapp:cache, --cache-to type=registry,dest=registry.example.com/myapp:cache. Записывает cache в image manifest или registry. Работает с --cache-from для полного цикла. Полезен для оптимизации CI/CD. После export cache включается в следующий build. Размер cache зависит от Dockerfile. Без --cache-to cache теряется после build
--target <stage-name> Multi-stage target Сборка определённого stage в multi-stage Dockerfile. Позволяет собрать только нужную часть. Пример: --target production — собирает только финальный stage, --target dev — development stage. В Dockerfile: FROM base AS builder, FROM production. Полезен для уменьшения финального образа (собираем в одном stage, копируем в другой). Без --target собирается последний stage. В CI: --target production для оптимизации
--build-arg <KEY>=<VALUE> Build arguments ARG переменные для Dockerfile. Переопределяет ARG из Dockerfile во время build. Пример: --build-arg NODE_ENV=production --build-arg API_URL=https://api.com. В Dockerfile: ARG NODE_ENV, ENV NODE_ENV=$NODE_ENV. Можно указать несколько: --build-arg KEY1=val1 --build-arg KEY2=val2. Переменные не сохраняются в образе (в отличие от ENV). Для проверки: docker image inspect --format '{{.ContainerConfig.Environment}}'. Пустые ARG: --build-arg KEY=
--secret id=<id>,src=<file> Build secrets Secret variables BuildKit для безопасной передачи чувствительных данных. Не попадает в image layers. Пример: --secret id=npmrc,src=.npmrc. В Dockerfile: RUN --mount=type=secret,id=mysecret cat /run/secrets/mysecret. Файл секрета не виден в docker image history. Поддерживает: id (идентификатор), src (файл), env (переменная). В CI: docker buildx build --secret id=token,env=TOKEN .. Альтернатива: Docker Configs в swarm
--ssh [<default>|<name>=<socket>] SSH forwarding SSH forwarding при build для доступа к приватным репозиториям. Пример: --ssh default использует SSH-agent хоста, --ssh mykey=/path/to/key. В Dockerfile: RUN --mount=type=ssh git clone git@github.com:user/repo.git. Полезен для clone private repos без токов в image. Работает с DOCKER_BUILDKIT=1. Для GitHub: ssh-add перед build. Без --ssh Git over SSH не работает
-f <path>, --file <path> Dockerfile path Путь к Dockerfile. Позволяет использовать нестандартные имена или location. Пример: -f Dockerfile.prod, -f ./dev/Dockerfile, -f /absolute/path/Dockerfile. По умолчанию ищет Dockerfile в context root. Поддерживает stdin: cat Dockerfile | docker build -f - .. В docker-compose: dockerfile: Dockerfile.prod. Можно использовать для разных окружений: Dockerfile.dev, Dockerfile.test. При указании директории — ищется Dockerfile внутри
-t <name>, --tag <name> Image tag Tag generated image. Можно указать несколько тегов. Пример: -t myapp:v1.0 -t myapp:latest. Формат: [registry/]repository[:tag]. Примеры: -t nginx:1.25, -t registry.example.com/myapp:v1. Теги могут содержать: буквы, цифры, ._, -. Без тега — latest по умолчанию. Для удаления: docker rmi tag. В CI: используйте семантическое версионирование -t 1.0.0 -t 1.0 -t 1 -t latest

Docker Volume Commands

Команда Название Описание
docker volume ls List volumes Список всех volume. Показывает DRIVER (local, rancher, etc) и NAME. Флаг --filter driver=local для фильтрации, --format для форматирования. Пример: docker volume ls — все, docker volume ls --filter dangling=true — неиспользуемые. Вывод: DRIVER, VOLUME NAME. Для подсчёта: docker volume ls -q | wc -l. Для поиска по имени: docker volume ls -q | grep data. По умолчанию все volumes используются local driver. Кастомные драйверы: docker volume create --driver local
docker volume create Create volume Создание volume для персистентного хранения данных. Пример: docker volume create mydata, docker volume create --opt "label=extra" mydata. Флаги: --driver (driver), --opt (options), --label. Volume создаётся в /var/lib/docker/volumes/. После создания: docker run -v mydata:/data myimage. Для HTTPS/SSH drivers: --driver. Не удаляет автоматически — нужно создавать вручную. В docker-compose: volumes создаются автоматически
docker volume inspect Inspect volume Информация volume: mountpoint, driver, options, labels. Пример: docker volume inspect mydata — JSON. Полезные поля: .Mountpoint (путь на хосте), .Labels, .Options. Для mountpoint: docker volume inspect --format '{{.Mountpoint}}' mydata. Полезен для mount на хосте или переноса данных. Также: docker inspect --format '{{.Mounts[0].Destination}}' container для контейнера. В продакшене используйте для управления storage
docker volume rm Remove volume Удаление volume. Volume не должен использоваться контейнерами. Пример: docker volume rm mydata, docker volume rm v1 v2. Флаги: -f (force). Если volume используется — ошибка. Для удаления используемых: docker rm -v container + docker volume rm. Альтернатива: docker volume prune. Внимание: удаление необратимо — все данные потеряны. Используйте docker inspect для проверки
docker volume prune Remove unused volumes Очистка unused volumes (не используемые ни одним контейнером). Пример: docker volume prune — с подтверждением, docker volume prune -f — без. Флаг --filter для условий. Полезен для освобождения места. Удаляет только volumes со статусом unused. Не удаляет volumes, используемые swarm services. Для удаления всех: docker volume prune --all. Перед удалением проверьте: docker volume ls --filter dangling=true

Docker Network Commands

Команда Название Описание
docker network ls List networks Список всех сетей. Включает built-in (bridge, host, none) и кастомные. Флаги: --filter (driver, scope), --format. Пример: docker network ls — все, docker network ls --filter driver=bridge. Вывод: NETWORK ID, NAME, DRIVER, SCOPE (local/swarm). Built-in: bridge (default), host (общий namespace), none (без сети). Кастомные: docker network create. Scope: local (single host), swarm (multi-host overlay)
docker network create Create network Создание сети для изоляции и коммуникации контейнеров. Пример: docker network create --driver bridge my-net, docker network create --subnet=172.20.0.0/16 --ip-range=172.20.5.0/24 my-net. Драйверы: bridge (default), overlay (swarm/multi-host), macvlan (MAC-based), host, none. Флаги: --subnet, --gateway, --ip-range, --opt, --label. Контейнеры в одной сети могут резолвить имена друг друга по имени сервиса/контейнера. Для swarm: --scope=swarm
docker network inspect Inspect network Информация сети: subnets, gateways, connected containers, drivers. Пример: docker network inspect my-net — JSON. Полезные поля: .IPAM.Config (subnets), .Containers (подключённые). Для IP конкретного контейнера: docker network inspect --format '{{range $k, $v := .Containers}}{{if eq $v.Name "mycontainer"}}{{$v.IPv4Address}}{{end}}{{end}}' my-net. Для debug: docker network inspect bridge — built-in сеть. В swarm: docker network inspect --format '{{.Scope}}' net
docker network connect Connect container Подключение контейнера к сети. Пример: docker network connect my-net mycontainer. Можно указать IP: --ip 172.20.0.100, network alias: --alias web. Контейнер может быть подключён к нескольким сетям. После connect контейнер получает доступ к другим контейнерам в сети по имени. Для проверки: docker network inspect my-net. Для автоматического connect: --network при создании контейнера. Для swarm services: docker service network
docker network disconnect Disconnect container Отключение контейнера от сети. Пример: docker network disconnect my-net mycontainer. Контейнер теряет доступ к другим контейнерам в этой сети. Для принудительного disconnect running контейнера: --force. Контейнер может быть отключён от всех сетей кроме host (невозможно). После disconnect контейнер остаётся. Для автоматического disconnect: --network при пересоздании. Полезен для isolation и security
docker network rm Remove network Удаление сети. Сеть должна быть пуста (без подключённых контейнеров). Пример: docker network rm my-net, docker network rm n1 n2. Флаги: -f (force). Для удаления с подключёнными: docker network disconnect сначала. Built-in сети (bridge, host, none) удалить нельзя. Для очистки: docker network prune. После удаления все network configurations удаляются. Используйте для cleanup
docker network prune Remove unused networks Очистка unused networks (не используемые ни одним контейнером). Пример: docker network prune — с подтверждением, docker network prune -f — без. Удаляет кастомные сети. Не удаляет built-in (bridge, host, none). Флаг --filter для условий. Полезен для cleanup после docker-compose down. Альтернатива: docker-compose down --rmi all. Перед удалением: docker network ls --filter dangling=true

Docker Compose Commands

Команда Название Описание
docker compose up Start compose stack Запуск compose services из docker-compose.yml. Пример: docker compose up — создание + запуск, docker compose up -d — detached, docker compose up --build — rebuild. Создает containers, networks, volumes по конфигу. По умолчанию использует docker-compose.yml. Флаги: -d, --build, --scale, --no-deps, --force-recreate. При изменении compose file — автоматически пересоздаёт. Для создания ресурсов: docker compose up --create-only. В CI/CD: docker compose up -d
docker compose down Stop compose stack Остановка compose stack. Останавливает и удаляет containers, networks. Пример: docker compose down, docker compose down -v — с volumes, docker compose down --rmi all — удалить images. Флаги: -v (volumes), --rmi (local images), --remove-orphans (orphan containers). По умолчанию удаляет всё кроме volumes (если не указан -v). В продакшене: docker compose down -v для полной очистки. Для сохранения volumes: docker compose down без -v
docker compose ps Compose containers Список compose containers со статусом. Пример: docker compose ps, docker compose ps -q — только IDs. Показывает: NAME, COMMAND, STATUS, PORTS. Полезен для мониторинга сервисов. Флаги: -q (quiet), --services (list services), --all (all containers). Для фильтрации: docker compose ps --filter "status=running". Аналог docker ps --filter "label=com.docker.compose.project=...". В CI: docker compose ps -q | xargs docker logs
docker compose logs Compose logs Логи compose services. Пример: docker compose logs — все, docker compose logs -f web — follow, docker compose logs --tail 100 db. Флаги: -f (follow), --tail, --since, --timestamps, --no-color. Для debug: docker compose logs --tail 1000 web | grep error. Логи всех сервисов: docker compose logs | grep -i error. В CI: docker compose logs --tail 50 для сохранения в артефактах. Для отключения цвета: --no-color
docker compose exec Execute command Выполнение команды внутри running контейнера сервиса. Пример: docker compose exec web bash, docker compose exec --user www-data web ls. Флаги: -u (user), --workdir, --env. В отличие от docker run --rm — контейнер сохраняется. Полезен для отладки, запуска maintenance. Аналог: docker exec с именем контейнера. Для service без running: docker compose run. Можно выполнить: docker compose exec db psql -U postgres
docker compose build Build services Build compose services. Пример: docker compose build — все, docker compose build web — сервис, docker compose build --no-cache. Флаги: --no-cache, --parallel, --pull, --push. Строит образы перед up. Для rebuild только изменившихся: docker compose up --build. В CI: docker compose build --pull для свежих base images. Для multi-arch: docker compose build --platform linux/amd64,linux/arm64. Альтернатива: docker compose up -d --build
docker compose pull Pull services Pull images compose services. Пример: docker compose pull — все, docker compose pull web. Флаги: --ignore-buildable, --include-deps, --parallel. Полезен в CI перед up для свежих образов. Аналог: docker pull для каждого сервиса. С --ignore-buildable — только external images. С --include-deps — pull dependencies. Для проверки версий: docker compose pull --dry-run (если поддерживается)
docker compose push Push services Push images compose services. Пример: docker compose push, docker compose push --ignore-buildable. Флаги: --ignore-buildable, --include-deps. Push всех образов в registry. По умолчанию push все. С --ignore-buildable — только images built by compose. В CI: docker compose push после docker compose build. Требует docker login. Для multi-arch: используйте docker buildx
docker compose restart Restart services Перезапуск compose services. Пример: docker compose restart, docker compose restart web. Флаги: -t (timeout), --no-deps. Перезапускает containers без изменения config. Полезен для применения изменений. Аналог: docker compose stop && docker compose start. Для force: docker compose kill && docker compose start. В продакшене: docker compose restart -t 30 для graceful
docker compose stop Stop services Остановка compose services. Пример: docker compose stop, docker compose stop web. Флаги: -t (timeout). Останавливает containers но не удаляет. Containers остаются — можно запустить docker compose start. Аналог: docker compose up -d --no-recreate (останавливает но не удаляет). Для полного удаления: docker compose down. В CI: docker compose stop перед docker compose down
docker compose start Start services Запуск compose services. Пример: docker compose start, docker compose start web. Флаги: --attach, --interactive. Запускает ранее stoped containers. Containers должны быть созданы (docker compose up или docker compose create). Аналог: docker start $(docker compose ps -q). Полезен для восстановления после docker compose down с сохранением volumes. Не создаёт новые resources
docker compose rm Remove services Удаление compose containers. Пример: docker compose rm — с подтверждением, docker compose rm -f — force. Флаги: -f, -v (volumes), -s (stop). Удаляет containers но не volumes/images. Полезен для cleanup. Аналог: docker rm $(docker compose ps -q). Для удаления volumes: docker compose down -v. Не удаляет networks. В CI: docker compose rm -f для очистки
docker compose config Validate config Проверка compose config на валидность. Вывод объединённую конфигурацию. Флаг --verbose для детальной проверки. Пример: docker compose config — валидация + вывод YAML, docker compose config --quiet — только валидация (exit 0 или 1). Полезен в CI для проверки конфигурации перед deploy. Альтернативы: docker-compose config (legacy), docker compose up --dry-run. Валидация включает: syntax, types, references, resource limits. Для вывода JSON: docker compose config --format json
docker compose images List images Список images используемых compose. Пример: docker compose images. Показывает: IMAGE, ID, CREATED, SIZE. Полезен для аудита используемых образов. Флаги: -q (quiet). В CI: docker compose images --format table для отчётов. Альтернатива: docker compose ps --format "{{.Image}}" для running. Для всех сервисов: docker compose ps -a --format "{{.Image}}"
docker compose top Running processes Процессы compose services. Пример: docker compose top, docker compose top web. Аналог docker top для каждого сервиса. Показывает PID, PPID, USER, CMD. Полезен для мониторинга и отладки. Флаги: -l (Unix), -l (Windows). Для всех сервисов: docker compose top | head -50. В CI: docker compose top --format json (если поддерживается). Альтернатива: docker compose exec web ps aux
docker compose events Compose events Stream событий compose. Пример: docker compose events, docker compose events --filter "service=web". Аналог docker events для compose. Показывает события: create, start, stop, die, pause, unpause. Полезен для мониторинга и автоматизации. Флаги: --filter, --since, --until. В CI: docker compose events | jq -r '.Status' | sort | uniq для анализа. Для debug: docker compose events --format json

Docker System Commands

Команда Название Описание
docker system df Disk usage Использование диска Docker: таблица с образами, volumes, build cache, контейнерами. Аналог df -h для Docker. Пример: docker system df — таблица, docker system df -v — детально. Вывод: TYPE, TOTAL, ACTIVE, SIZE, RECLAIMABLE. Для очистки: docker system prune. Для конкретных типов: docker system df --type image. Полезен для мониторинга дискового пространства. В CI: docker system df --format table для отчётов. Для анализа: docker system df -v | grep RECLAIMABLE
docker system prune Cleanup Docker Очистка unused objects. Пример: docker system prune — containers/networks/images, docker system prune -a — включает images, docker system prune --volumes — включает volumes. Флаги: -a (all), --volumes, -f (без подтверждения). Удаление: dangling images, stopped containers, unused networks, build cache. С -a — все образы без контейнеров. С --volumes — все unused volumes. Альтернативы: docker container prune, docker image prune, docker volume prune. В CI: docker system prune -af --volumes после тестов
docker system info System info Подробная информация о Docker system: driver, storage, daemon config. Аналог docker info. Пример: docker system info. Вывод: Server Version, Storage Driver, Security Options, Operating System, Architecture, CPU, Memory, Docker Root Dir. Полезен для диагностики проблем конфигурации. Для проверки драйверов: docker system info --format '{{.Driver}}'. В CI: docker system info для отчёта. Альтернатива: docker info (работает тоже)
docker system events Events stream Stream Docker events. Пример: docker system events, docker system events --filter 'type=container'. Аналог docker events. Показывает события: container, image, network, volume, daemon. Флаги: --filter, --since, --until. В CI: docker system events | jq -r '.Status' | sort | uniq для анализа. Для мониторинга: docker system events --format json. Альтернатива: docker events (работает тоже)

Docker Swarm Commands

Команда Название Описание
docker swarm init Initialize swarm Создание swarm cluster на текущем node. Пример: docker swarm init — авто-detect, docker swarm init --advertise-addr 10.0.0.5. Первый manager node. После init: docker swarm join-token manager/worker для добавления нод. Manager-ноды хранят cluster state. Для production: 3 или 5 manager-нод для HA. После init: docker node ls — покажет этот нод. Worker-ноды можно добавить: docker swarm join с token. Не инициализируется на Docker Desktop по умолчанию
docker swarm join Join swarm Подключение node к swarm cluster. Пример: docker swarm join --token manager-ip:2377. Token можно получить: docker swarm join-token worker/manager. На manager node будет добавлен как worker. На worker node — как worker. Port 2377 (TCP) должен быть открыт. После join: docker node ls — проверит статус. Для manager join: docker swarm join --token . Node должен иметь доступ к Docker API. Альтернатива: docker swarm join без token (если администратор настроил auto-approve)
docker swarm leave Leave swarm Выход из swarm. Пример: docker swarm leave — worker, docker swarm leave --force — manager. Manager node удаляется из cluster. Worker node отключается. После leave node становится standalone. Для forced leave (network issues): docker swarm leave --force. Если это последний manager — cluster уничтожается. Worker node можно leave без force. Для cleanup: docker swarm leave --force && docker system prune -a. После leave все services на нодe останавливаются
docker service create Create service Создание swarm service. Пример: docker service create --name web --replicas 3 -p 8080:80 nginx. Создаёт distributed service с заданным количеством реплик. Флаги: --name, --replicas, -p, --network, --mount, --env, --constraint, --update-parallelism. Service — абстракция над контейнерами. Swarm автоматически балансирует и масштабирует. Для rollback: docker service update --rollback. В production: всегда --replicas ≥ 2 для HA. Альтернатива: docker stack deploy с YAML
docker service ls List services Список всех swarm services. Флаг --filter для фильтрации. Пример: docker service ls — все, docker service ls --filter "name=web". Вывод: ID, NAME, MODE, REPLICAS, IMAGE, PORTS. Полезен для мониторинга services. Для проверки status: docker service ls --filter "replicas=1/3" (mismatched replicas). Для JSON: docker service ls --format json. В CI: docker service ls | grep web | awk '{print $2}'. Для inspect одного: docker service inspect web
docker service scale Scale service Масштабирование service. Пример: docker service scale web=5 — 5 реплик, docker service scale web=2 db=3. Scale up/down in real-time. Swarm автоматически добавляет/удаляет контейнеры. Для auto-scaling: используйте docker auto-scale или external tools. Для rollback: docker service scale web=3. В production: scale зависит от нагрузки. Мониторинг: docker service ls. Для horizontal scaling: --replicas N при создании. Альтернатива: docker service update --replicas N
docker service update Update service Rolling update service. Пример: docker service update --image nginx:1.25 web, docker service update --replicas 5 web. Обновляет образ, параметры, constraints. По умолчанию rolling update с --update-parallelism 1 и --update-delay 30s. Для rollback: docker service update --rollback web. Флаги: --image, --replicas, --env, --constraint. Для zero-downtime: --update-parallelism 1 --update-delay 10s --update-order stop-first. В CI/CD: docker service update --image newimage service
docker node ls List nodes Список всех swarm nodes. Флаг --filter role=<manager|worker>. Пример: docker node ls — все, docker node ls --filter role=manager. Вывод: ID, HOSTNAME, STATUS, AVAILABILITY, MANAGER STATUS, ENGINE VERSION. Полезен для мониторинга cluster. Для проверки status: docker node ls --filter "manager status=reachability=reachable". Для drainage: docker node update --availability drain node-id. Для promotion/demotion: docker node promote/demote node-id. В production: 3-5 manager для HA
docker stack deploy Deploy stack Deploy stack file (docker-compose.yml). Пример: docker stack deploy -c docker-compose.yml myapp. Создаёт/обновляет все resources по конфигу. Stack — группа связанных services. После deploy: docker stack ls, docker stack services myapp. Флаги: -c (compose file), --resolve-image (always/changed/never). В CI/CD: docker stack deploy --prune -c docker-compose.yml myapp. Для rollback: docker stack deploy с previous version. Альтернатива: docker service create вручную
docker stack rm Remove stack Удаление stack и всех его resources. Пример: docker stack rm myapp. Удаляет services, networks, volumes (если configured). После rm stack не отображается в docker stack ls. Для удаления volumes: docker volume prune. Для cleanup: docker stack rm myapp && docker system prune -a. В CI: docker stack rm myapp после тестов. Альтернатива: docker stack deploy --prune для partial cleanup

Docker Environment Variables

Переменная Название Описание
DOCKER_HOST Docker daemon socket Адрес Docker daemon. По умолчанию unix:///var/run/docker.sock. Для TCP: tcp://10.0.0.5:2376. Влияет на все Docker команды. Для SSH: ssh://user@host. Для TLS: tls://host:port. Установить: export DOCKER_HOST=tcp://10.0.0.5:2376. Проверить: echo $DOCKER_HOST. Не рекомендуется в CI — используйте contexts. Для Docker Desktop: DOCKER_HOST=unix://$HOME/.docker/run/docker.sock (macOS). Альтернатива: docker --host флаг
DOCKER_CONTEXT Docker context Активный context. Переключает между разными daemon. Значение по умолчанию: default. Пример: export DOCKER_CONTEXT=prod. Полезен для переключения окружений без флага. Контексты хранятся в ~/.docker/contexts/. Список: docker context ls. Для создания: docker context create prod --docker host=tcp://10.0.0.5:2376. Альтернатива: docker --context флаг. В CI: DOCKER_CONTEXT для автоматизации
DOCKER_CONFIG Config directory Путь config directory. Содержит config.json, certificates, contexts. По умолчанию: ~/.docker. Пример: export DOCKER_CONFIG=/opt/docker-config. Содержимое: config.json (auth), tls/ (certs), contexts/. Для изоляции: mkdir -p ~/.docker-dev && export DOCKER_CONFIG=~/.docker-dev. При смене конфига: новые команды используют новый config. Для backup: tar czf docker-config.tar.gz ~/.docker. Не храните чувствительные данные без шифрования
DOCKER_TLS_VERIFY TLS verification Проверка TLS. Установите в 1 для включения TLS. Пустое значение — отключить. Пример: export DOCKER_TLS_VERIFY=1. Влияет на DOCKER_HOST с TLS. Для автоматического: docker-machine env (устанавливает DOCKER_*) для Docker Machine. При работе с Docker Desktop: TLS включён по умолчанию. Для private registry: убедитесь что ca.pem доступен. Отключение TLS (DOCKER_TLS_VERIFY=) не рекомендуется в production
DOCKER_CERT_PATH TLS cert path Путь сертификатов TLS. Содержит ca.pem, cert.pem, key.pem. По умолчанию: $DOCKER_CONFIG/tls. Пример: export DOCKER_CERT_PATH=/etc/docker/tls. Для Docker Machine: docker-machine env устанавливает автоматически. При ошибках TLS: проверьте что все три файла существуют. Для генерации: docker-machine generate-certs (в newer versions). Для production: используйте self-signed CA или Let's Encrypt. Файлы должны иметь права 600 для ключей
DOCKER_DEFAULT_PLATFORM Default platform Default platform для pull/build/run. Пример: linux/amd64. Переопределяет автоопределение архитектуры. Полезен когда хост и целевая платформа различаются. Пример: export DOCKER_DEFAULT_PLATFORM=linux/arm64 — всегда pull arm64 на x86. Работает с pull, build, run. Для проверки: docker info --format '{{.Architecture}}'. В CI: DOCKER_DEFAULT_PLATFORM для cross-platform builds. Альтернатива: --platform флаг. Ошибка при несовместимости платформы
DOCKER_API_VERSION API version Override API version Docker Engine. Полезно для совместимости со старыми CLI. Пример: 1.41. Формат: M.m (major.minor). newer Docker требует API 1.41+. Для старых daemon: export DOCKER_API_VERSION=1.40. Проверить supported API: docker version --format '{{.Server.APIVersion}}'. Альтернатива: DOCKER_API_VERSION в daemon.json. В CI: DOCKER_API_VERSION для совместимости с old Docker versions. Слишком старая версия может не поддерживать новые команды
BUILDKIT_PROGRESS BuildKit output Формат BuildKit output. Значения: plain (подробный), tty (progress bar). Для CI: plain. Пример: export BUILDKIT_PROGRESS=plain. В терминале: tty показывает прогресс-бар. В CI/CD: plain для логирования. Альтернатива: DOCKER_BUILDKIT=1 (включает BuildKit). При plain виден каждый шаг build. При tty — красивый прогресс. Для debug: export BUILDKIT_PROGRESS=plain. В GitHub Actions: автоматически plain