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), |
--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 появятся как |
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 . 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 |