Docker CLI — Глобальні параметри
| Параметр | Назва | Опис |
|---|---|---|
| Глобальні прапори CLI | ||
docker |
Docker CLI | Основна команда Docker CLI. Усі інші команди Docker є підкомандами цього виконуваного файлу. Docker діє як обгортка для управління Docker Engine через REST API. Основні категорії: container, image, network, volume, compose, swarm, system. Для перегляду всіх доступних підкоманд використовуйте docker --help. Пріоритет виконання: глобальні прапори → підкоманда → аргументи підкоманди. Приклад: docker ps — список контейнерів, docker image ls — список образів, docker volume create mydata — створити том |
docker --config <path> |
Каталог конфігурації Docker | Вказує альтернативний шлях до каталогу конфігурації Docker CLI. За замовчуванням ~/.docker. Містить: config.json (облікові дані реєстру), 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 | Використовує вказаний контекст Docker для виконання команди. Контекст — це шаблон, який зберігає інформацію про демон Docker (кінцева точка, налаштування TLS, авторизація). Дозволяє перемикатися між різними середовищами без зміни змінних середовища. Перелік контекстів: docker context ls. Управління: docker context create, docker context use. Вбудовані контексти: default (локальний демон), desktop-linux (Docker Desktop). Приклад: docker --context prod ps — показує контейнери на сервері продукції. Рекомендація: docker context create staging --docker host=ssh://staging@example.com — створює контекст для staging сервера |
docker -D, docker --debug |
Режим налагодження | Вмикає режим налагодження CLI, який виводить детальну інформацію про налагодження: HTTP запити до Docker API, заголовки, тіла відповідей, час. Корисно при налагодженні проблем підключення, помилок API, TLS проблем. Виведення налагодження направлено в stderr, дозволяючи перенаправити у файл. Рівень журналу Docker Engine також можна підвищити через /etc/docker/daemon.json з "log-level": "debug". Приклад: docker -D build . 2> debug.log — зберегти виведення налагодження у файл. Для постійного активації встановіть DOCKER_DEBUG=1 у змінних середовища. Примітка: може викрити чутливі дані (токени, паролі) у виведенні |
docker -H <host>, docker --host <host> |
Хост демона Docker | Підключатися до віддаленого демона Docker замість локального за замовчуванням (unix:///var/run/docker.sock). Підтримуються протоколи: SSH (ssh://user@host), TCP (tcp://host:port), Unix сокет (unix:///path/to/socket), TLS захищений TCP (tls://host:port). TLS необхідний для захищеного підключення. Приклад: docker -H tcp://10.0.0.5:2376 ps — підключитися до віддаленого демона. З SSH: docker -H ssh://user@192.168.1.10 ps (використовує SSH тунель). Попередження: незашифрований TCP (порт 2375) є небезпечним — усі дані передаються у відкритому вигляді |
docker -l <level>, docker --log-level <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 підключення | Вмикає TLS шифрування для підключення до демона Docker. Використовує сертифікати з $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 перевірка | Вмикає TLS з обов'язковою перевіркою сертифіката сервера (взаємний TLS). Перевіряє автентичність сервера через CA сертифікат, захищаючи від атак підробки. Вимагає 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> |
CA сертифікат TLS | Шлях до CA (Центру сертифікації) сертифіката (ca.pem). Використовується для перевірки автентичності демона Docker. Сертифікат має бути підписаний довіреним центром сертифікації. Зазвичай генерується разом із клієнтськими сертифікатами. Приклад: 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 | Шлях до клієнтського TLS сертифіката (cert.pem). Використовується для двобічної аутентифікації (взаємний TLS) — демон перевіряє автентичність клієнта. Разом з --tlskey формує SSL сертифікат. Приклад: docker --tlscert /etc/docker/cert.pem --tlskey /etc/docker/key.pem -H tls://prod:2376 ps. Сертифікат має бути підписаний тим же CA, що і демон. Для генерації: openssl req -newkey rsa:4096 -nodes -sha256 -keyout client.key -out client.csr, потім підписати через CA |
docker --tlskey <path> |
Приватний ключ TLS | Шлях до приватного ключа 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
| Команда | Назва | Опис |
|---|---|---|
docker version |
Версія Docker | Показує версії Docker CLI та Engine. Виводить інформацію про Client та Server частини: версія, версія API, Go версія, Git commit, дата збірки, статус клієнта/сервера. Корисно для діагностики несумісності версій. Приклад: docker version — показує повну інформацію. --format прапора для форматування: docker version --format '{{.Client.Version}}'. Якщо демон не запущено, показує лише Client інформацію та помилку підключення |
docker info |
Інформація про систему Docker | Показує системну інформацію демона Docker: кількість контейнерів, кількість образів, статус swarm, драйвери за замовчуванням (сховище, мережа, журналування). Корисно для перевірки конфігурації та ресурсів. Приклад: docker info — повна інформація. Ключові розділи: Server Version, Storage Driver, Security Options, Total Memory, NRPE. --format ключ для вилучення конкретних полів: docker info --format '{{.ServerVersion}}'. Альтернатива: docker system info — також працює |
docker help |
Довідка Docker | Виводить довідку Docker CLI зі списком усіх доступних команд та опцій. Без аргументів показує загальну довідку. З аргументом — довідку для конкретної команди. Приклад: docker help run — довідка для docker run, docker --help — загальна довідка. Альтернатива: docker run --help. Також працює: docker help container ls. В інтерактивному режимі пропонує автодоповнення команд (zsh/bash). Також доступно: docker MANIFEST для перегляду офіційної документації |
docker login |
Вхід до реєстру | Авторизація до Docker реєстру. Зберігає облікові дані у ~/.docker/config.json для подальших операцій pull/push. Приклад: docker login — вхід до Docker Hub, docker login registry.example.com -u myuser -p mypass — вхід до приватного реєстру. Прапори: --username, --password (або ввід через stdin для безпеки), --help. Для автоматизації CI: echo "$PASSWORD" | docker login -u "$USER" --password-stdin. Виведення не містить паролів |
docker logout |
Вихід з реєстру | Вихід з реєстру, видаляє збережені облікові дані з config.json. Корисно при зміні облікових записів або очищенні чутливих даних. Приклад: docker logout — вихід з Docker Hub, docker logout registry.example.com — вихід з конкретного реєстру. Після виходу усі операції з тим реєстром потребують повторної авторизації. Не видаляє TLS сертифікати чи контексти |
docker search |
Пошук образів | Пошук образів у 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}}'. Також можна шукати у приватному реєстрі через API |
docker inspect |
Перегляд об'єктів | Отримати низькорівневу JSON інформацію про контейнер, образ, мережу, том або інший об'єкт Docker. Повертає повну конфігурацію та статус. Приклад: docker inspect mycontainer — повна інформація, docker inspect --format '{{.NetworkSettings.IPAddress}}' mycontainer — лише IP адреса. Типи об'єктів: container, image, network, volume, service, node. -f прапора для Go шаблонів, --type для фільтрації за типом об'єкта. Корисно для скриптів автоматизації та діагностики |
docker events |
Потік подій Docker | Поток подій Docker демона в реальному часі. Включає події створення/видалення контейнерів, зміни статусу, мережі, тому. Приклад: docker events — потік подій, docker events --filter 'type=container' --filter 'event=start' — лише запуски контейнерів. Прапори: --filter (мультиплекс), --since (дата/час), --until, --format. Корисно для моніторингу, автоматизації, логування. Для фільтрації у скриптах: docker events --filter 'image=nginx' | grep start |
docker system |
Управління системою Docker | Управління системою Docker: очищення, моніторинг диска, інформація. Підкоманди: df (аналог df -h), prune (очищення непотрібних об'єктів), info (інформація про систему). Приклад: docker system df — використання диска, docker system prune -a — видалити всі непотрібні об'єкти. Для очищення: docker system prune --volumes (включаючи тони). Корисно для звільнення дискового простору та підтримки системи в чистоті |
docker context |
Контексти Docker | Управління контекстами для перемикання між різними деконами Docker. Підкоманди: 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 |
Ініціалізація проекту | Інтерактивна генерація стартових Docker файлів для проекту: Dockerfile, docker-compose.yml, .dockerignore. Автоматично визначає тип проекту (Node.js, Python, Go, Java, тощо) та створює оптимізовані файли. Приклад: docker init — у поточному каталозі, docker init --mode complete — без запитань. Створює: Dockerfile (з багатоетапною збіркою), docker-compose.yml (з сервісами), .dockerignore, .env. Також можна вказати образ: docker init --image nginx. Документація: docker init docs |
docker debug |
Налагодження контейнера | Налагодження shell для контейнера/образа. Запускає інтерактивну сесію налагодження контейнера з доступом до файлової системи та інструментів. Приклад: docker debug mycontainer — налагодження контейнера, docker debug ubuntu — налагодження образу. Запускає nerdctl — альтернативний клієнт з розширеними можливостями. Включає доступ до strace, ltrace, gdb для глибокої діагностики. Корисно для дослідження вмісту образу та контейнера |
docker buildx |
Builder Buildx | Розширений BuildKit builder з підтримкою багатоархітектурної збірки, управління кешем та CI інтеграції. Це сучасний спосіб збірки Docker образів. Приклад: docker buildx build --platform linux/amd64,linux/arm64 -t myapp:latest . — багатоархітектурна збірка. Підкоманди: build (збірка), ls (список), create (створити builder), inspect, rm, use, prune. BuildKit забезпечує кешування шарів, секретні змінні, SSH-Forwarding, експорт кешу. Документація: BuildKit docs |
docker builder |
Управління збіркою | Управління екземплярами builder. Дозволяє створювати, налаштовувати та видаляти екземпляри BuildKit builder для різних завдань. Приклад: docker builder ls — список builder, docker builder create mybuilder --driver docker-container. Підкоманди: ls, create, inspect, rm, prune, use, update. Корисно для ізоляції процесів збірки, управління ресурсами та оптимізації конвеєра збірки. Альтернатива: docker buildx |
Команди контейнерів Docker
| Команда | Назва | Опис |
|---|---|---|
docker container ls |
Список контейнерів | Список запущених контейнерів. Аналог docker ps. Прапори: -a (усі контейнери), -n (останні N), --filter (за статусом, назвою, мережею, тощо), --format (формат виведення). Приклад: docker container ls — лише запущені, docker container ls -a — усі, docker container ls --filter "status=running" — лише запущені. Виведення: CONTAINER ID, IMAGE, COMMAND, CREATED, STATUS, PORTS, NAMES. Корисно для моніторингу поточних контейнерів та діагностики |
docker container ls -a |
Список усіх контейнерів | Список усіх контейнерів включаючи зупинені та створені. Показує повний статус: 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 |
Запуск контейнера | Створити та запустити контейнер. Створює новий екземпляр з образу з вказаною конфігурацією. Приклад: docker container run --name web -p 8080:80 -d nginx. Основні прапори: -d (detached), -it (інтерактивний TTY), --name, -p (порти), -v (тони), -e (змінні), --network, --restart, --memory, --cpus. Порядок прапорів має значення: глобальні → run-специфічні → образ → команда. Якщо образ не знайдено локально, автоматично виконує docker pull. Для фонових процесів використовуйте -d, для інтерактивного доступу -it |
docker container create |
Створити контейнер | Створити контейнер без запуску. Корисно для налаштування параметрів перед запуском, тестування образів, створення скриптів. Приклад: docker container create --name mycontainer -v /data:/data nginx. Контейнер можна запустити пізніше: docker container start mycontainer. Повертає ID контейнера. Можна перевірити конфігурацію: docker container inspect mycontainer. Корисно в CI/CD для створення базових образів з налаштованими тонами та мережами |
docker container start |
Запустити контейнер | Запустити раніше створений або зупинений контейнер. Приклад: 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 |
Зупинити контейнер | Зупинити контейнер, надсилаючи 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). Після зупинки контейнер залишається — використовуйте docker rm для видалення. У продукції завжди використовуйте stop замість kill |
docker container restart |
Перезапустити контейнер | Перезапустити контейнер: 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 |
Видалити контейнер | Видалити контейнер. Контейнер має бути зупинений (або використайте -f). Приклад: docker container rm mycontainer, docker container rm -f mycontainer — примусове видалення. Прапори: -f (примус), -v (видалити тони), --link (видалити посилання). Можна видалити кілька: docker container rm c1 c2 c3. Для очищення всіх зупинених контейнерів: docker container prune. Попередження: видалення незворотне — усі дані поза тонами будуть втрачені |
docker container exec |
Виконати команду | Виконати команду всередині запущеного контейнера. Корисно для налагодження, запуску додаткових процесів, виконання скриптів. Приклад: 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 |
Логи контейнера | Переглянути логи контейнера. Виводить 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 (часові мітки). Для перегляду логів з помилками: docker container logs mycontainer 2>&1 | grep -i error. Для контейнерів з --restart=always логи зберігаються у /var/lib/docker/containers/ |
docker container top |
Запущені процеси | Список процесів контейнера. Аналог 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 |
Використання ресурсів | Моніторинг CPU/RAM використання контейнерів у реальному часі. Приклад: 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}}". Показує мережевий та блоковий I/O. Корисно для виявлення вузьких місць та оптимізації ресурсів |
docker container cp |
Копіювати файли | Копіювати файли між хостом та контейнером. Приклад: docker container cp mycontainer:/app/config.yml ./config.yml — з контейнера, docker container cp ./file.txt mycontainer:/tmp/ — у контейнер. Прапори: -a (archive режим), -L (слідувати за симвоолічними посиланнями). При копіюванні каталогу: docker container cp ./dir mycontainer:/tmp/. Для створення архіву всередині: docker container cp mycontainer:/app .. Працює з зупиненими контейнерами. Для копіювання файлів з образу (перед створенням контейнера), використовуйте docker create + docker cp + docker rm |
docker container rename |
Перейменувати контейнер | Перейменувати контейнер. Корисно для зміни назви без перестворення контейнера. Приклад: docker container rename old_name new_name. Контейнер зберігає всю конфігурацію, IP адресу (в мережі), тони. Не можна перейменувати в існуючу назву. Працює як з запущеними, так і з зупиненими контейнерами. Альтернатива в docker-compose: name або container_name в yaml. Не впливає на hostname контейнера (встановлюється через --hostname) |
docker container pause |
Призупинити контейнер | Призупинити контейнер використовуючи cgroups freezer. Усі процеси контейнера призупиняються у поточному стані. Приклад: docker container pause mycontainer. Корисно для створення консистентних знімків, тимчасової зупинки без втрати даних. Для продовження: docker container unpause mycontainer. Неможливо виконувати команди в призупиненому контейнері (exec не працює). Дані у файловій системі та пам'яті зберігаються на момент призупинення. Альтернатива: kill -STOP всередині контейнера |
docker container unpause |
Відновити контейнер | Продовжити призупинений контейнер. Усі процеси продовжують виконання з точки призупинення. Приклад: docker container unpause mycontainer. Контейнер відновлюється з використанням ресурсів, ніби його ніколи не призупиняли. Точний час призупинення = час відновлення (втрати виконання немає). Можна лише відновити раніше призупинені контейнери |
docker container kill |
Вбити контейнер | Примусово завершити контейнер. Надсилає SIGTERM сигнал (за замовчуванням) процесам контейнера. Приклад: docker container kill mycontainer, docker container kill -s SIGINT mycontainer — надіслати SIGINT. --signal прапора дозволяє вибрати сигнал: SIGINT, SIGTERM, SIGKILL, тощо. На відміну від stop — немає graceful shutdown, контейнер завершується миттєво. Використовуйте лише коли stop не допоміг. Може призвести до втрати даних або пошкодження файлової системи |
docker container wait |
Чекати контейнер | Чекати поки контейнер завершиться. Блокує виконання поки контейнер не завершиться та повертає код виходу. Приклад: docker container wait mycontainer — чекає та повертає код виходу. Можна чекати кілька: docker container wait c1 c2 c3. Корисно в скриптах для синхронізації: docker run --rm myimage & CID=$!; docker wait $CID; echo "Exit: $?". Використовується в Docker Compose для логіки depends_on. Контейнер може бути запущений або створений |
docker container prune |
Видалити зупинені контейнери | Видалити всі зупинені контейнери. Безпечне — видаляє лише контейнери зі статусом Exited або Dead. Приклад: docker container prune — з підтвердженням, docker container prune -f — без підтвердження. --filter прапора для фільтрації: docker container prune --filter "until=24h" — видалити контейнери, зупинені 24 год. тому. Не видаляє контейнери з прикріпленими тонами (за замовчуванням). Альтернатива: docker rm $(docker ps -aq --filter "status=exited"). Рекомендовано для регулярного очищення |
docker run — Основні параметри
| Параметр | Назва | Опис |
|---|---|---|
-d, --detach |
Detached режим | Запустити контейнер у фоні (detached). Негайно повертає ID контейнера у stdout після запуску. Контейнер продовжує працювати після закриття терміналу. Приклад: docker run -d --name web nginx. Без -d контейнер працює у foreground та блокує термінал. Для управління detached контейнером: docker logs -f для логів, docker attach для підключення. Не працює з --rm в деяких версіях Docker. Для моніторингу: docker stats |
-it |
Інтерактивний термінал | Інтерактивний TTY режим. Комбінація -i (інтерактивний — відкриває stdin) + -t (tty — виділяє псевдо-термінал). Дозволяє взаємодіяти з контейнером як з регулярним shell. Приклад: docker run -it ubuntu bash — інтерактивний bash всередині контейнера, docker run -it alpine — sh без аргументу. Для вимкнення виведення логів без -d: -i. Для підключення до запущеного контейнера: docker exec -it mycontainer bash. Без -t не буде кольорового виведення та роботи терміналу |
--name <name> |
Назва контейнера | Іменований контейнер замість випадкового ID. Назва використовується для посилань у Docker Compose та мережі, для зручного управління. Приклад: docker run --name my-web -d nginx, docker stop my-web. Назва має бути унікальною — не можна створити контейнер з існуючою назвою. Для перевірки: docker ps --filter "name=my-web". Можна змінити: docker rename. В docker-compose, name визначається сервісом автоматично. Назви не можуть містити / та мають починатися з літери або символу |
-p <host-ip:host-port:container-port>, --publish <host-ip:host-port:container-port> |
Мапування портів | Переадресація портів з хоста на контейнер. Дозволяє зробити сервіс всередині контейнера доступним із зовні. Приклад: -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 |
Опублікувати всі порти | Автоматично опублікувати всі 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] |
Монтування тому | Монтувати шлях/том хоста у контейнер. Дані зберігаються після видалення контейнера. Типи: іменований том, bind mount, tmpfs. Приклади: -v data:/var/lib/data (іменований том — автоматично створюється), -v ~/.ssh:/root/.ssh:ro (bind mount з read-only), -v /host/path:/container/path (bind mount). Прапори: :ro (read-only), :Z (SELinux), :z (SELinux shared). Bind mount залежить від ОС, іменований том є переносним. Bind mount дані можуть потребувати правильних дозволів (UID/GID) |
--mount type=<bind|volume|tmpfs>,src=<name>,dst=<path> |
Розширене монтування | Сучасний синтаксис монтування. Більш читабельний та надійний ніж -v. Типи: bind (шлях хоста), volume (іменований том), tmpfs. Приклади: --mount type=volume,src=data,dst=/var/lib/data — іменований том, --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 для параметрів тому. Розділяє джерело та призначення — дозволяє створити том без шляху хоста. Важче читати з багатьма тонами |
-e <KEY>=<VALUE>, --env <KEY>=<VALUE> |
Змінна середовища | Передати змінні середовища у контейнер. Переопреділяє ENV з Dockerfile. Приклад: -e DB_HOST=postgres -e DB_PORT=5432. Можна передати змінні з хоста: -e $(printenv | grep DB_). --env-file прафора завантажує з файлу. Важливо для конфігурації додатків без пересборки образу. Змінні доступні всередині як звичайні змінні середовища. Не використовуйте для паролів у команді (видно у ps) — використовуйте --env-file або secrets. Підтримує типізацію через int/float перетворення в додатку |
--env-file <path> |
Файл змінних середовища | Завантажити змінні середовища з файлу. Кожний рядок файлу: KEY=VALUE або KEY (береться з хоста). Зручно для зберігання чутливих даних та великих конфігурацій. Приклад: --env-file .env, --env-file config/database.env. Формат файлу: DB_HOST=postgres, DB_PORT=5432, # comment. .env файли зазвичай включаються у .dockerignore. Пріоритет: -e > --env-file > Dockerfile ENV. Змінні з файлу переопреділяють системні змінні середовища |
--restart <policy> |
Політика перезапуску | Політика перезапуску контейнера після зупинки. Значення: no (ніколи, за замовчуванням), on-failure[:max-retries] (при помилці), always (завжди), unless-stopped (завжди окрім ручної зупинки). Приклад: --restart unless-stopped — автоматично перезавантажується окрім ручної зупинки. --restart on-failure:5 — максимум 5 спроб. Важливо для продукції — забезпечує відмовостійкість. Працює при перезавантаженні хоста. Не працює з --rm. Перевірка: docker inspect --format '{{.HostConfig.RestartPolicy.Name}}' container. В docker-compose: restart: always |
--network <network> |
Вибір мережі | Підключитися до мережі Docker. Типи: bridge (за замовчуванням), host (спільний з хостом), none (без мережі), назва кастомної мережі. Приклад: --network my-net, --network host (без портів), --network none (ізоляція). Для комунікації контейнерів використовуйте кастомні мережі — DNS ім'я = ім'я сервісу. Контейнери на default bridge не можуть резолвити імена один одного. Для multi-host: --network=overlay у swarm. Альтернатива: --network-alias для додаткових імен |
--ip <IP> |
Статичний IP | Статична IP адреса для контейнера. Працює лише з кастомною bridge мережею (не з default bridge). Приклад: --ip 172.20.0.100 --network my-net. IP має належати підмережі мережі. Якщо IP використаний — помилка. Корисно для додатків, що вимагають фіксований IP (ліцензування, фаєрволи). Перевірка: docker inspect --format '{{.NetworkSettings.Networks.my-net.IPAddress}}' container. За замовчуванням Docker призначає випадковий IP з пулу |
--hostname <name> |
Ім'я хоста | Ім'я хоста контейнера. Встановлює hostname всередині контейнера. Впливає на команду hostname та /etc/hostname. Приклад: --hostname myserver. За замовчуванням використовує ID контейнера (перші 12 символів). Корисно для додатків, що використовують hostname для ідентифікації. Змінює лише внутрішній hostname — не DNS в мережі. В docker-compose: визначається hostname. Для зміни в запущеному контейнері: docker exec hostname newname |
--dns <IP> |
DNS сервер | DNS сервер всередині контейнера. Переопреділяє DNS з конфігурації Docker демона. Приклад: --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 мережі: --dns-search example.com. Якщо DNS не налаштовано, використовує DNS хоста (/etc/resolv.conf). Працює лише при створенні контейнера |
--memory <size> |
Ліміт пам'яті | Ліміт RAM для контейнера. Підтримуються суфікси: b, k, m, g. Приклад: --memory 512m, --memory 2g, --memory 1024k. Без ліміту — повний доступ до RAM хоста. Якщо перевищено, контейнер може бути вбитий OOM killer. Для swap: --memory-swap (повинен бути ≥ --memory). Для сумісності: --oom-kill-disable (не рекомендовано). Перевірка: docker stats. Для продукції: завжди встановлюйте --memory для стабільності. У swarm: deploy.resources.reservations.memory |
--cpus <count> |
Ліміт CPU | Ліміт ресурсів CPU для контейнера. Приклад: --cpus 1.5 — 1.5 ядра, --cpus 4 — 4 ядра. За замовчуванням контейнер використовує весь доступний CPU. Значення може бути дробовим для тонкої налаштування. Для ліміту конкретних ядер: --cpuset-cpus "0,1". Перевірка: docker stats, docker top. В docker-compose: cpus: 1.5. Працює з cgroups v1/v2. Альтернатива: --cpu-shares (відносний вага) |
--privileged |
Привілейований режим | Підвищені привілеї: контейнер отримує доступ до всіх пристроїв хоста, вимикає обмеження безпеки (AppArmor, seccomp, capabilities). Використовувати лише для спеціальних випадків (Docker-in-Docker, налагодження). Приклад: docker run --privileged myimage. Безпека: контейнер може стати root на хості. Для обмежених привілеїв: --cap-add замість цього. У swarm: privileged: true у конфігурації сервісу. Завжди оцінуйте ризики використання |
--user <UID>[:<GID>] |
Користувач всередині контейнера | Запустити від конкретного UID/GID замість UID 0 (root за замовчуванням). Приклад: --user 1000:1000, --user nobody. Корисно для безпеки та доступу до монтованих томів з правильними дозволами. Якщо не вказано — використовує образ (Dockerfile USER). Перевірка: docker exec id. В docker-compose: user: "1000:1000". Для образів без USER директиви — за замовчуванням root |
--workdir <path> |
Робочий каталог | Робочий каталог всередині контейнера. Переопреділяє WORKDIR з Dockerfile. Приклад: --workdir /app. Аналог cd при запуску контейнера. Усі відносні шляхи в команді будуть від workdir. Корисно для організації файлової структури. В docker-compose: workdir: /app. Не можна використовувати в ENTRYPOINT — використовується при запуску команди. Перевіряє існування каталогу |
--rm |
Автовилучення | Автоматично видалити контейнер після зупинки. Зручно для одноразових задач. Приклад: docker run --rm myimage command. Не працює з -d та -it разом — контейнер буде видалений миттєво. Корисно в CI/CD та скриптах: docker run --rm postgres:15 psql -h db -c "SELECT 1". Контейнер не з'являється у docker ps -a. Для збереження результатів використовуйте тони. Після --rm контейнер можна інспектувати лише під час виконання |
--platform <os/arch[/variant]> |
Цільова платформа | Багатоархітектурна платформа для збірки/запуску на конкретній архітектурі. Приклад: --platform linux/amd64, --platform linux/arm64. Корисно для кросплатформної розробки та емуляції. Коли pull/build визначає архітектуру образу. Для списку доступних: docker buildx ls --drivers. Помилка на несумісність: No matching manifest. В CI: --platform для перевірки на різних архітектурах. Також: DOCKER_DEFAULT_PLATFORM змінна середовища |
--health-cmd <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. За замовчуванням вимкнено. Для Dockerfile: HEALTHCHECK CMD curl -f http://localhost/ || exit 1. Корисно у swarm та docker-compose для автоматичного перезавантаження |
--health-interval <duration> |
Інтервал перевірки здоров'я | Інтервал перевірки здоров'я. Приклад: --health-interval 30s, --health-interval 5m. Також: --health-timeout (таймаут для кожної перевірки), --health-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> |
Переопередження entrypoint | Замінити ENTRYPOINT з Dockerfile. Корисно для запуску контейнера з іншою основною командою. Приклад: --entrypoint bash для запуску в bash замість команди образу, --entrypoint "" — очистити entrypoint. В docker-compose: entrypoint: /bin/bash. Entrypoint + CMD = повна команда запуску. Переопреділяє лише entrypoint, CMD з образу зберігається. Для очищення CMD: --entrypoint "" --command "нова команда". Entrypoint запускається як PID 1 |
Команди образів Docker
| Команда | Назва | Опис |
|---|---|---|
docker image ls |
Список образів | Список усіх локальних образів. Прапори: -a (усі шари, включаючи проміжні), --filter (за міткою, digest, творцем), --format (table/raw/go-template), --no-trunc. Приклад: docker image ls — основні образи, docker image ls -a — усі, docker image ls --filter "dangling=true" — dangling образи. Виведення: REPOSITORY, TAG, IMAGE ID, CREATED, SIZE. Для пошуку конкретного: docker image ls --format '{{.Repository}}:{{.Tag}}' | grep nginx. Корисно для аудиту та очищення дискового простору |
docker image pull |
Завантажити образ | Завантажити образ з реєстру (Docker Hub, приватний реєстр). Приклад: 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 |
Відправити образ | Відправити образ у реєстр. Потребує авторизації (docker login). Приклад: docker image push myapp:v1, docker image push registry.example.com/myapp:latest. Спочатку створіть тег: docker image tag myapp:v1 registry.example.com/myapp:v1. Push завантажує шари поступово — незмінені шари не перезавантажуються. Для багатоархітектурного: docker buildx build --push --platform .... Обмеження Docker Hub rate: 100 pull/6h (анонімний), 200 (автентифікований). Приватний реєстр потребує HTTPS або --insecure-registry |
docker image build |
Зібрати образ | Зібрати образ з Dockerfile. Аналог docker build. Приклад: docker image build -t myapp:v1 .. Прапори: -t (тег), -f (шлях Dockerfile), --build-arg, --network, --cache-from. За замовчуванням шукає Dockerfile у поточному каталозі. Результат — локальний образ з вказаним тегом. Для багатоетапної збірки: --target production. Кеш збірки прискорює повторні збірки. Для очищення після: docker image prune. Альтернатива: docker buildx build для розширених можливостей |
docker image rm |
Видалити образ | Видалити образ з локальної системи. Приклад: docker image rm myapp:v1, docker image rm nginx alpine myapp — кілька. Прапори: -f (примус), --no-prune. Не можна видалити образ, що використовується запущеним контейнером (використайте -f). Для dangling образів: docker image rm $(docker image ls -q --filter "dangling=true"). Якщо образ має тегованих батьків — лише тег видаляється. Для очищення: docker image prune -a. Видалення великих образів звільляє значний простір |
docker image prune |
Видалити непотрібні образи | Очищення dangling образів (без тегів). Без прапорів видаляє лише dangling. Приклад: docker image prune — dangling, docker image prune -a — усі непотрібні, docker image prune --all. --filter прафора для умов: docker image prune --filter "until=24h". -f прафора без підтвердження. Видаляє образи, що не використовуються жодним контейнером. Включає проміжні шари. Використовуйте з обережністю — можуть знадобитися для пересбірки. Альтернатива: docker system prune — повне очищення |
docker image inspect |
Переглянути образ | JSON інформація про образ. Показує повну конфігурацію: архітектура, CMD, Env, Volumes, час створення, тощо. Приклад: 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 |
Історія образу | Історія шарів образу. Показує команди Dockerfile, що створили кожен шар. Приклад: docker image history nginx, docker image history --no-trunc nginx. Виведення: IMAGE, CREATED, CREATED BY, SIZE. Корисно для аналізу розміру образу та розуміння його збірки. ВЕЛИКІ шари видно у колонці SIZE. Для конкретного шару: docker image history --format '{{.ID}}: {{.CreatedBy}}' nginx. Якщо Dockerfile не збережено — можна відновити з історії. Альтернатива: docker buildx debug для інтерактивного дослідження |
docker 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]. Корисно для версіонування, переміщення у реєстр. Тег можна змінити: docker image tag знову. Для видалення: docker image rm target:tag. Тег не впливає на розмір образу — це легке посилання |
docker image save |
Зберегти образ | Експортувати образ у tar архів. Корисно для передачі між машинами без реєстру. Приклад: docker image save -o myimage.tar myapp:v1, docker image save myapp:v1 nginx:alpine | gzip > images.tar.gz — кілька образів. Прапори: -o (вихід), --output. Отриманий tar можна скопіювати та завантажити на іншій машині. Містить усі шари, метадані, історію. Розмір = сума всіх шарів. Для стиснення використовуйте gzip або docker save | gzip. Не зберігає тони |
docker image load |
Завантажити образ | Імпортувати образ з 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. Теги зберігаються з архіву. Образы без тегів з'являються як |
Команди збірки Docker
| Параметр | Назва | Опис |
|---|---|---|
docker buildx build |
Збірка BuildKit | Сучасна збірка BuildKit з розширеними можливостями. Підтримує багатоархітектурну збірку, експорт кешу, секрети, SSH forward. Приклад: docker buildx build --platform linux/amd64,linux/arm64 -t myapp:latest --push .. Це рекомендований спосіб збірки Docker. Можливості: паралельна збірка шарів, прогресивне виведення, інтеграція з GitHub Actions. Для активації: export DOCKER_BUILDKIT=1. Альтернатива: docker build (застарілий builder). BuildKit використовує демон docker-buildkit для ізоляції |
--platform <os/arch[/variant]> [, <os/arch[/variant]>...] |
Багатоархітектурна збірка | Зібрати багатоархітектурні образи. Приклад: --platform linux/amd64,linux/arm64. Результат — manifest list (багатоархітектурний образ). Корисно для підтримки різних архітектур в одному образі. При push створює manifest з кількома архітектурами. Pull без --platform вибере архітектуру хоста. Для налаштування: docker buildx create --use builder з підтримкою кількох архітектур. Помилка на несумісних шарах. В GitHub Actions: --platform linux/amd64,linux/arm64 |
--push |
Push після збірки | Відправити образ у реєстр одразу після збірки. Аналог docker buildx build --push. Приклад: docker buildx build --platform linux/amd64 -t myapp:latest --push .. Корисно в CI/CD — одна команда для збірки + push. Потребує docker login. Без --push образ залишається локальним. Для кількох тегів: -t v1.0 -t latest --push. Push йде шар за шаром — незмінені шари не перезавантажуються. Для debug: видаліть --push та перевірте локально |
--load |
Завантажити у локальний демон | Завантажити образ локально після збірки. Для buildx, завантажує лише поточну архітектуру (на відміну від --push з багатоархітектурним). Приклад: docker buildx build --load -t myapp:latest .. Корисно коли потрібен образ локально без окремого docker image save/load. Завантажує у стандартний Docker демон. Швидше ніж --push + pull. Для багатоархітектурного + локального: використовуйте --load з однією архітектурою |
--cache-from type=<inline|registry|local>,ref=<ref> |
Джерело кешу збірки | Використовувати кеш збірки з іншого образу. Прискорює збірку шляхом повторного використання попередніх шарів. Приклад: --cache-from type=registry,ref=myapp:cache, --cache-from type=inline. Типи: inline (у manifest образу), registry (віддалений образ), local (локальний каталог). Корисно в CI для кешування між запусками. Працює з --cache-to для повного циклу. Кеш можна переглянути: docker buildx du. Без кешу — повна пересбірка |
--cache-to type=<inline|registry>,dest=<dest> |
Експорт кешу збірки | Експортувати кеш збірки для повторного використання. Приклад: --cache-to type=inline,dest=myapp:cache, --cache-to type=registry,dest=registry.example.com/myapp:cache. Записує кеш у manifest образу або реєстр. Працює з --cache-from для повного циклу. Корисно для оптимізації CI/CD. Після експорту кеш включається в наступну збірку. Розмір залежить від Dockerfile. Без --cache-to кеш втрачається після збірки |
--target <stage-name> |
Ціль багатоетапної збірки | Зібрати конкретний етап в багатоетапному Dockerfile. Дозволяє зібрати лише потрібну частину. Приклад: --target production — збирає лише фінальний етап, --target dev — етап розробки. В Dockerfile: FROM base AS builder, FROM production. Корисно для зменшення фінального образу (збірка в одному етапі, копіювання в інший). Без --target збирається останній етап. В CI: --target production для оптимізації |
--build-arg <KEY>=<VALUE> |
Аргументи збірки | ARG змінні для Dockerfile. Переопреділяє ARG з Dockerfile під час збірки. Приклад: --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> |
Секрети збірки | Секретні змінні BuildKit для безпечної передачі чутливих даних. Не потрапляють у шари образу. Приклад: --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 forward | SSH forward під час збірки для доступу до приватних репозиторіїв. Приклад: --ssh default використовує host SSH-agent, --ssh mykey=/path/to/key. В Dockerfile: RUN --mount=type=ssh git clone git@github.com:user/repo.git. Корисно для клонування приватних репозиторіїв без токенів в образі. Працює з DOCKER_BUILDKIT=1. Для GitHub: ssh-add перед збіркою. Без --ssh Git через SSH не працює |
-f <path>, --file <path> |
Шлях Dockerfile | Шлях до Dockerfile. Дозволяє використовувати нестандартні назви або розташування. Приклад: -f Dockerfile.prod, -f ./dev/Dockerfile, -f /absolute/path/Dockerfile. За замовчуванням шукає Dockerfile у корені контексту. Підтримує stdin: cat Dockerfile | docker build -f - .. В docker-compose: dockerfile: Dockerfile.prod. Можна використовувати для різних середовищ: Dockerfile.dev, Dockerfile.test. При вказівні каталогу шукає Dockerfile всередині |
-t <name>, --tag <name> |
Тег образу | Тег зібраного образу. Можна вказати кілька тегів. Приклад: -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: використовуйте semantic versioning -t 1.0.0 -t 1.0 -t 1 -t latest |
Команди томів Docker
| Команда | Назва | Опис |
|---|---|---|
docker volume ls |
Список томів | Список усіх томів. Показує DRIVER (local, rancher, тощо) та 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. За замовчуванням усі тони використовують local драйвер. Кастомні драйвери: docker volume create --driver local |
docker volume create |
Створити том | Створити том для зберігання даних. Приклад: docker volume create mydata, docker volume create --opt "label=extra" mydata. Прапори: --driver (драйвер), --opt (параметри), --label. Том створюється у /var/lib/docker/volumes/. Після створення: docker run -v mydata:/data myimage. Для HTTPS/SSH драйверів: --driver. Не видаляється автоматично — потрібно створювати вручну. В docker-compose: тони створюються автоматично |
docker volume inspect |
Переглянути том | Інформація про том: mountpoint, driver, опції, мітки. Приклад: docker volume inspect mydata — JSON. Корисні поля: .Mountpoint (шлях на хості), .Labels, .Options. Для mountpoint: docker volume inspect --format '{{.Mountpoint}}' mydata. Корисно для монтування на хості або передачі даних. Також: docker inspect --format '{{.Mounts[0].Destination}}' container для контейнера. У продукції використовується для управління сховищем |
docker volume rm |
Видалити том | Видалити том. Том не повинен використовуватися контейнерами. Приклад: docker volume rm mydata, docker volume rm v1 v2. Прапори: -f (примус). Якщо том використовується — помилка. Для видалення використовуваного: docker rm -v container + docker volume rm. Альтернатива: docker volume prune. Попередження: видалення незворотне — усі дані втрачаються. Використайте docker inspect для перевірки |
docker volume prune |
Видалити непотрібні тони | Очищення непотрібних томів (не використовуються жодним контейнером). Приклад: docker volume prune — з підтвердженням, docker volume prune -f — без підтвердження. --filter прафора для умов. Корисно для звільнення простору. Видаляє лише тони зі статусом непотрібних. Не видаляє тони, що використовуються swarm сервісами. Для видалення всіх: docker volume prune --all. Перед видаленням перевірте: docker volume ls --filter dangling=true |
Команди мереж Docker
| Команда | Назва | Опис |
|---|---|---|
docker network ls |
Список мереж | Список усіх мереж. Включає вбудовані (bridge, host, none) та кастомні. Прапори: --filter (драйвер, scope), --format. Приклад: docker network ls — усі, docker network ls --filter driver=bridge. Виведення: NETWORK ID, NAME, DRIVER, SCOPE (local/swarm). Вбудовані: bridge (за замовчуванням), host (спільний простір), none (без мережі). Кастомні: docker network create. Scope: local (один хост), swarm (multi-host overlay) |
docker network create |
Створити мережу | Створити мережу для ізоляції та комунікації контейнерів. Приклад: 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 (за замовчуванням), overlay (swarm/multi-host), macvlan (MAC-based), host, none. Прапори: --subnet, --gateway, --ip-range, --opt, --label. Контейнери в одній мережі можуть резолвити імена один одного за ім'ям сервісу/контейнера. Для swarm: --scope=swarm |
docker network inspect |
Переглянути мережу | Інформація про мережу: підмережі, шлюзи, підключені контейнери, драйвери. Приклад: docker network inspect my-net — JSON. Корисні поля: .IPAM.Config (підмережі), .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 — вбудована мережа. У swarm: docker network inspect --format '{{.Scope}}' net |
docker network connect |
Підключити контейнер | Підключити контейнер до мережі. Приклад: docker network connect my-net mycontainer. Можна вказати IP: --ip 172.20.0.100, мережевий alias: --alias web. Контейнер може бути підключений до кількох мереж. Після connect, контейнер отримує доступ до інших контейнерів у мережі за іменем. Для перевірки: docker network inspect my-net. Для авто-підключення: --network при створенні контейнера. Для swarm сервісів: docker service network |
docker network disconnect |
Відключити контейнер | Відключити контейнер від мережі. Приклад: docker network disconnect my-net mycontainer. Контейнер втрачає доступ до інших контейнерів у цій мережі. Для примусового відключення запущеного контейнера: --force. Контейнер може бути відключений від усіх мереж окрім host (неможливо). Контейнер залишається після disconnect. Для авто-відключення: --network при перестворенні. Корисно для ізоляції та безпеки |
docker network rm |
Видалити мережу | Видалити мережу. Мережа має бути порожньою (без підключених контейнерів). Приклад: docker network rm my-net, docker network rm n1 n2. Прапори: -f (примус). Для видалення з підключеними: спочатку docker network disconnect. Вбудовані мережі (bridge, host, none) не можна видалити. Для очищення: docker network prune. Після видалення всі мережеві конфігурації видаляються. Використовуйте для очищення |
docker network prune |
Видалити непотрібні мережі | Очищення непотрібних мереж (не використовуються жодним контейнером). Приклад: docker network prune — з підтвердженням, docker network prune -f — без підтвердження. Видаляє кастомні мережі. Не видаляє вбудовані (bridge, host, none). --filter прафора для умов. Корисно для очищення після docker-compose down. Альтернатива: docker-compose down --rmi all. Перед видаленням: docker network ls --filter dangling=true |
Команди Docker Compose
| Команда | Назва | Опис |
|---|---|---|
docker compose up |
Запустити compose стек | Запустити compose сервіси з docker-compose.yml. Приклад: docker compose up — створити + запустити, docker compose up -d — detached, docker compose up --build — пересобрати. Створює контейнери, мережі, тони за конфігурацією. За замовчуванням використовує docker-compose.yml. Прапори: -d, --build, --scale, --no-deps, --force-recreate. При зміні compose файлу — авто-перестворення. Для створення ресурсів: docker compose up --create-only. В CI/CD: docker compose up -d |
docker compose down |
Зупинити compose стек | Зупинити compose стек. Зупиняє та видаляє контейнери, мережі. Приклад: docker compose down, docker compose down -v — з тонами, docker compose down --rmi all — видалити образи. Прапори: -v (тони), --rmi (локальні образи), --remove-orphans (сирі контейнери). За замовчуванням видаляє все окрім тонів (якщо не вказано). У продукції: docker compose down -v для повного очищення. Для збереження тонів: docker compose down без -v |
docker compose ps |
Compose контейнери | Список compose контейнерів зі статусом. Приклад: docker compose ps, docker compose ps -q — лише ID. Показує: NAME, COMMAND, STATUS, PORTS. Корисно для моніторингу сервісів. Прапори: -q (quiet), --services (список сервісів), --all (усі контейнери). Для фільтрації: 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 логи | Логи compose сервісів. Приклад: 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 для збереження в artifacts. Для вимкнення кольору: --no-color |
docker compose exec |
Виконати команду | Виконати команду всередині запущеного сервісу контейнера. Приклад: docker compose exec web bash, docker compose exec --user www-data web ls. Прапори: -u (користувач), --workdir, --env. На відміну від docker run --rm — контейнер зберігається. Корисно для налагодження, запуску технічного обслуговування. Аналог: docker exec з ім'ям контейнера. Для сервісу без запуску: docker compose run. Можна виконати: docker compose exec db psql -U postgres |
docker compose build |
Зібрати сервіси | Зібрати compose сервіси. Приклад: docker compose build — усі, docker compose build web — сервіс, docker compose build --no-cache. Прапори: --no-cache, --parallel, --pull, --push. Збирає образи перед up. Для збірки лише змінених: docker compose up --build. В CI: docker compose build --pull для свіжих базових образів. Для багатоархітектурного: docker compose build --platform linux/amd64,linux/arm64. Альтернатива: docker compose up -d --build |
docker compose pull |
Завантажити сервіси | Завантажити образи для compose сервісів. Приклад: docker compose pull — усі, docker compose pull web. Прапори: --ignore-buildable, --include-deps, --parallel. Корисно в CI перед up для свіжих образів. Аналог: docker pull для кожного сервісу. З --ignore-buildable — лише зовнішні образи. З --include-deps — завантажити залежності. Для перевірки версій: docker compose pull --dry-run (якщо підтримується) |
docker compose push |
Відправити сервіси | Відправити образи для compose сервісів. Приклад: docker compose push, docker compose push --ignore-buildable. Прапори: --ignore-buildable, --include-deps. Відправляє всі образи у реєстр. За замовчуванням, push всіх. З --ignore-buildable — лише образи, зібрані compose. В CI: docker compose push після docker compose build. Потребує docker login. Для багатоархітектурного: використовуйте docker buildx |
docker compose restart |
Перезапустити сервіси | Перезапустити compose сервіси. Приклад: docker compose restart, docker compose restart web. Прапори: -t (таймаут), --no-deps. Перезапускає контейнери без зміни конфігурації. Корисно для застосування змін. Аналог: docker compose stop && docker compose start. Для примусового: docker compose kill && docker compose start. У продукції: docker compose restart -t 30 для graceful |
docker compose stop |
Зупинити сервіси | Зупинити compose сервіси. Приклад: docker compose stop, docker compose stop web. Прапори: -t (таймаут). Зупиняє контейнери, але не видаляє їх. Контейнери залишаються — можна запустити з docker compose start. Аналог: docker compose up -d --no-recreate (зупиняє, але не видаляє). Для повного видалення: docker compose down. В CI: docker compose stop перед docker compose down |
docker compose start |
Запустити сервіси | Запустити compose сервіси. Приклад: docker compose start, docker compose start web. Прапори: --attach, --interactive. Запускає раніше зупинені контейнери. Контейнери мають бути створені (docker compose up або docker compose create). Аналог: docker start $(docker compose ps -q). Корисно для відновлення після docker compose down з збереженням тонів. Не створює нові ресурси |
docker compose rm |
Видалити сервіси | Видалити compose контейнери. Приклад: docker compose rm — з підтвердженням, docker compose rm -f — примусово. Прапори: -f, -v (тони), -s (зупинити). Видаляє контейнери, але не тони/образи. Корисно для очищення. Аналог: docker rm $(docker compose ps -q). Для видалення тонів: docker compose down -v. Не видаляє мережі. В CI: docker compose rm -f для очищення |
docker compose config |
Перевірити конфігурацію | Перевірити конфігурацію compose на правильність. Виводить об'єднану конфігурацію. --verbose прафора для детальної перевірки. Приклад: docker compose config — валідація + виведення YAML, docker compose config --quiet — лише валідація (вихід 0 або 1). Корисно в CI для перевірки конфігурації перед deploy. Альтернативи: docker-compose config (застаріла), docker compose up --dry-run. Валідація включає: синтаксис, типи, посилання, обмеження ресурсів. Для JSON виведення: docker compose config --format json |
docker compose images |
Список образів | Список образів, що використовуються compose. Приклад: docker compose images. Показує: IMAGE, ID, CREATED, SIZE. Корисно для аудиту використаних образів. Прапори: -q (quiet). В CI: docker compose images --format table для звітів. Альтернатива: docker compose ps --format "{{.Image}}" для запущених. Для всіх сервісів: docker compose ps -a --format "{{.Image}}" |
docker compose top |
Запущені процеси | Процеси compose сервісів. Приклад: 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 події | Потік 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
| Команда | Назва | Опис |
|---|---|---|
docker system df |
Використання диска | Використання диска Docker: таблиця з образами, тонами, кешем збірки, контейнерами. Аналог 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 |
Очищення Docker | Очищення непотрібних об'єктів. Приклад: docker system prune — контейнери/мережі/образи, docker system prune -a — включаючи образи, docker system prune --volumes — включаючи тони. Прапори: -a (усі), --volumes, -f (без підтвердження). Видалення: dangling образи, зупинені контейнери, непотрібні мережі, кеш збірки. З -a — усі образи без контейнерів. З --volumes — усі непотрібні тони. Альтернативи: docker container prune, docker image prune, docker volume prune. В CI: docker system prune -af --volumes після тестів |
docker system info |
Інформація про систему | Детальна інформація про систему Docker: драйвер, сховище, конфігурація демона. Аналог 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 |
Потік подій | Потік подій Docker. Приклад: 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
| Команда | Назва | Опис |
|---|---|---|
docker swarm init |
Ініціалізувати swarm | Створити swarm кластер на поточному ноді. Приклад: docker swarm init — авто-визначення, docker swarm init --advertise-addr 10.0.0.5. Перший manager нода. Після init: docker swarm join-token manager/worker для додавання нод. Manager ноди зберігають стан кластера. Для продукції: 3 або 5 manager нод для HA. Після init: docker node ls — покаже цю ноду. Worker ноди можна додати: docker swarm join з токеном. Не ініціалізується на Docker Desktop за замовчуванням |
docker swarm join |
Приєднатися до swarm | Приєднати ноду до swarm кластера. Приклад: docker swarm join --token . Токен можна отримати: docker swarm join-token worker/manager. На manager ноді, буде доданий як worker. На worker ноді — як worker. Порт 2377 (TCP) має бути відкритим. Після join: docker node ls — перевірити статус. Для manager join: docker swarm join --token . Ноде має мати доступ до Docker API. Альтернатива: docker swarm join без токена (якщо admin налаштував auto-approve) |
docker swarm leave |
Покинути swarm | Вийти з swarm. Приклад: docker swarm leave — worker, docker swarm leave --force — manager. Manager нода видаляється з кластера. Worker нода відключається. Після leave, нода стає standalone. Для примусового виходу (мережеві проблеми): docker swarm leave --force. Якщо це останній manager — кластер руйнується. Worker нода може покинути без force. Для очищення: docker swarm leave --force && docker system prune -a. Після leave, усі сервіси на ноді зупиняються |
docker service create |
Створити сервіс | Створити swarm сервіс. Приклад: docker service create --name web --replicas 3 -p 8080:80 nginx. Створює розподілений сервіс з вказаною кількістю реплік. Прапори: --name, --replicas, -p, --network, --mount, --env, --constraint, --update-parallelism. Сервіс — абстракція над контейнерами. Swarm автоматично балансує та масштабує. Для rollback: docker service update --rollback. У продукції: завжди --replicas ≥ 2 для HA. Альтернатива: docker stack deploy з YAML |
docker service ls |
Список сервісів | Список усіх swarm сервісів. --filter прафора для фільтрації. Приклад: docker service ls — усі, docker service ls --filter "name=web". Виведення: ID, NAME, MODE, REPLICAS, IMAGE, PORTS. Корисно для моніторингу сервісів. Для перевірки статусу: docker service ls --filter "replicas=1/3" (неспівпадіння реплік). Для JSON: docker service ls --format json. В CI: docker service ls | grep web | awk '{print $2}'. Для перегляду одного: docker service inspect web |
docker service scale |
Масштабувати сервіс | Масштабувати сервіс. Приклад: docker service scale web=5 — 5 реплік, docker service scale web=2 db=3. Масштабування вгору/вниз в реальному часі. Swarm автоматично додає/видаляє контейнери. Для auto-масштабування: використовуйте docker auto-scale або зовнішні інструменти. Для rollback: docker service scale web=3. У продукції: масштабування залежить від навантаження. Моніторинг: docker service ls. Для горизонтального масштабування: --replicas N при створенні. Альтернатива: docker service update --replicas N |
docker service update |
Оновити сервіс | Rolling оновлення сервісу. Приклад: docker service update --image nginx:1.25 web, docker service update --replicas 5 web. Оновлює образ, параметри, обмеження. За замовчуванням, 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 |
Список нод | Список усіх swarm нод. --filter role=<manager|worker> прафора для фільтрації. Приклад: docker node ls — усі, docker node ls --filter role=manager. Виведення: ID, HOSTNAME, STATUS, AVAILABILITY, MANAGER STATUS, ENGINE VERSION. Корисно для моніторингу кластера. Для перевірки статусу: docker node ls --filter "manager status=reachability=reachable". Для drainage: docker node update --availability drain node-id. Для промоції/демотування: docker node promote/demote node-id. У продукції: 3-5 manager для HA |
docker stack deploy |
Розгорнути стек | Розгорнути стек файл (docker-compose.yml). Приклад: docker stack deploy -c docker-compose.yml myapp. Створює/оновлює всі ресурси за конфігурацією. Стек — група пов'язаних сервісів. Після deploy: docker stack ls, docker stack services myapp. Прапори: -c (compose файл), --resolve-image (always/changed/never). В CI/CD: docker stack deploy --prune -c docker-compose.yml myapp. Для rollback: docker stack deploy з попередньою версією. Альтернатива: docker service create вручну |
docker stack rm |
Видалити стек | Видалити стек та всі його ресурси. Приклад: docker stack rm myapp. Видаляє сервіси, мережі, тони (якщо налаштовано). Після rm, стек не з'являється у docker stack ls. Для видалення тонів: docker volume prune. Для очищення: docker stack rm myapp && docker system prune -a. В CI: docker stack rm myapp після тестів. Альтернатива: docker stack deploy --prune для часткового очищення |
Змінні середовища Docker
| Змінна | Назва | Опис |
|---|---|---|
DOCKER_HOST |
Сокет демона Docker | Адреса демона Docker. За замовчуванням 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 — використовуйте контексти. Для Docker Desktop: DOCKER_HOST=unix://$HOME/.docker/run/docker.sock (macOS). Альтернатива: docker --host прапора |
DOCKER_CONTEXT |
Контекст Docker | Активний контекст. Перемикання між різними деконами. Значення за замовчуванням: 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.json, сертифікати, контексти. За замовчуванням: ~/.docker. Приклад: export DOCKER_CONFIG=/opt/docker-config. Вміст: config.json (auth), tls/ (сертифікати), contexts/. Для ізоляції: mkdir -p ~/.docker-dev && export DOCKER_CONFIG=~/.docker-dev. При зміні конфігурації: нові команди використовують нову конфігурацію. Для резервного копіювання: tar czf docker-config.tar.gz ~/.docker. Не зберігайте чутливі дані без шифрування |
DOCKER_TLS_VERIFY |
Перевірка TLS | Перевірка TLS. Встановити на 1 для ввімкнення TLS. Порожнє значення — вимкнення. Приклад: export DOCKER_TLS_VERIFY=1. Впливає на DOCKER_HOST з TLS. Для auto: docker-machine env (встановлює DOCKER_*) для Docker Machine. При роботі з Docker Desktop: TLS увімкнено за замовчуванням. Для приватного реєстру: переконайтеся, що ca.pem доступний. Вимкнення TLS (DOCKER_TLS_VERIFY=) не рекомендовано у продукції |
DOCKER_CERT_PATH |
Шлях TLS сертифікатів | Шлях до 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 (у новіших версіях). Для продукції: використовуйте self-signed CA або Let's Encrypt. Файли мають мати 600 дозволи для ключів |
DOCKER_DEFAULT_PLATFORM |
Типова платформа | Типова платформа для pull/build/run. Приклад: linux/amd64. Переопреділяє авто-визначення архітектури. Корисно коли хост та цільова платформи різняться. Приклад: export DOCKER_DEFAULT_PLATFORM=linux/arm64 — завжди тягнути arm64 на x86. Працює з pull, build, run. Для перевірки: docker info --format '{{.Architecture}}'. В CI: DOCKER_DEFAULT_PLATFORM для кросплатформних збірок. Альтернатива: --platform прафора. Помилка на несумісності платформ |
DOCKER_API_VERSION |
Версія API | Переопреділити версію API Docker Engine. Корисно для сумісності зі старими CLI. Приклад: 1.41. Формат: M.m (major.minor). Новий Docker вимагає API 1.41+. Для старого демона: export DOCKER_API_VERSION=1.40. Перевірити підтримувану API: docker version --format '{{.Server.APIVersion}}'. Альтернатива: DOCKER_API_VERSION у daemon.json. В CI: DOCKER_API_VERSION для сумісності зі старими версіями Docker. Занадто стара версія може не підтримувати нові команди |
BUILDKIT_PROGRESS |
Виведення BuildKit | Формат виведення BuildKit. Значення: plain (детальний), tty (прогрес бар). Для CI: plain. Приклад: export BUILDKIT_PROGRESS=plain. В терміналі: tty показує прогрес бар. В CI/CD: plain для логування. Альтернатива: DOCKER_BUILDKIT=1 (вмикає BuildKit). З plain, бачите кожен крок збірки. З tty — гарний прогрес. Для debug: export BUILDKIT_PROGRESS=plain. В GitHub Actions: автоматично plain |