docker
46 commands
46 shown
Мультиплатформенная сборка и push
Кросс-компиляция и push в реестр с BuildKit
docker buildx build --platform linux/amd64,linux/arm64 -t reg/img:tag --push .
Запуск контейнера с env-файлом
Локальный запуск с переменными из файла; --rm удаляет контейнер при выходе
docker run --rm -it --env-file .env -p 8000:8000 img:tag
Просмотр слоёв образа
Каждый слой, его команда и размер; поиск лишнего
docker history --no-trunc img:tag
Очистка неиспользуемого
Удалить остановленные контейнеры, неиспользуемые образы, сети, тома
docker system prune -af --volumes
Копирование образа между реестрами
Перетегировать и запушить в другой реестр
docker pull src-reg/img:tag && docker tag src-reg/img:tag dst-reg/img:tag && docker push dst-reg/img:tag
Сохранение образа в архив
Экспорт образа для передачи в изолированную среду
docker save img:tag | gzip > img.tar.gz
Сборка с build args
Передать переменные времени сборки в ARG инструкции Dockerfile
docker build --build-arg VERSION=1.2.3 --build-arg ENV=prod -t img:tag .
Сканировать образ Trivy
Завершить с ошибкой при HIGH или CRITICAL уязвимостях
trivy image --exit-code 1 --severity HIGH,CRITICAL img:tag
SBOM образа
Генерировать Software Bill of Materials для образа
docker sbom img:tag
Инспект запущенного контейнера
Сетевые настройки запущенного контейнера
docker inspect <container> | jq '.[0].NetworkSettings.Networks'
Compose: запустить в фоне
Собрать и запустить все сервисы в фоне
docker compose up -d --build
Compose: логи в реальном времени
Стриминг последних 100 строк и следить за сервисом compose
docker compose logs -f --tail=100 <service>
Compose: остановить и удалить тома
Остановить и удалить контейнеры, сети и тома
docker compose down -v
Дисковое использование контейнеров
Детальное использование диска по образам, контейнерам, томам
docker system df -v
Exec в контейнер под root
Войти в контейнер под root даже если дефолтный пользователь другой
docker exec -it -u root <container> bash
Скопировать файл в контейнер
Добавить файл в запущенный контейнер без пересборки
docker cp ./local-file.conf <container>:/etc/app/config.conf
Загрузить образ из архива
Импортировать образ сохранённый через docker save
docker load < img.tar.gz
GC в приватном реестре
Освободить диск в самохостированном Docker Registry
docker exec -it registry bin/registry garbage-collect /etc/docker/registry/config.yml
Сборка конкретного stage
Собрать только до конкретного stage в многостадийном Dockerfile
docker build --target builder -t img:builder .
Сборка с аргументами
Передать переменные сборки в инструкции ARG Dockerfile
docker build --build-arg APP_VERSION=1.2.3 --build-arg ENV=prod -t myapp:1.2.3 .
Мульти-платформенная сборка
Собрать и запушить мульти-архитектурный образ через BuildKit
docker buildx build --platform linux/amd64,linux/arm64 -t myapp:latest --push .
Слои образа
Все слои с полными командами и размерами
docker history --no-trunc <image>
Экспорт ФС контейнера
Просмотреть объединённую ФС контейнера как tar-поток
docker export <container> | tar -tvf - | head -30
Изменения контейнера от образа
Добавленные (A), изменённые (C), удалённые (D) файлы в контейнере
docker diff <container>
Создать образ из контейнера
Сохранить ФС работающего контейнера как образ
docker commit -m 'debug snapshot' <container> debug-snapshot:$(date +%s)
Запуск с лимитами ресурсов
Ограничить контейнер 512MB RAM и половиной ядра CPU
docker run --memory=512m --cpus=0.5 --oom-kill-disable=false myapp
Использование ресурсов контейнеров
Одноразовый снапшот CPU и памяти для всех контейнеров
docker stats --no-stream --format 'table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}'
Удалить незанятые образы
Удалить все неиспользуемые образы <none>:<none>
docker image prune -f
Полная очистка Docker
Удалить остановленные контейнеры, образы, сети, тома
docker system prune -a --volumes -f
Скопировать файл из контейнера
Извлечь файл из запущенного или остановленного контейнера
docker cp <container>:/app/config.yaml ./local-config.yaml
Docker Compose запуск фоном
Пересобрать и запустить сервисы, удалить лишние контейнеры
docker compose up -d --build --remove-orphans
Масштабировать сервис Compose
Запустить 5 реплик сервиса worker
docker compose up -d --scale worker=5
Логи сервиса Compose
Стримить последние 100 строк конкретного сервиса Compose
docker compose logs -f --tail=100 worker
Инспектировать сеть Docker
IP-адреса всех контейнеров в сети bridge
docker network inspect bridge | jq '.[0].Containers | to_entries[] | .value | {Name, IPv4Address}'
Создать кастомную сеть
Создать bridge-сеть с кастомной подсетью
docker network create --driver bridge --subnet 172.30.0.0/24 mynet
Сохранить и загрузить образ
Экспортировать образ в архив и импортировать на другом хосте
docker save myapp:1.0 | gzip > myapp.tar.gz && docker load < myapp.tar.gz
HEALTHCHECK в Dockerfile
Встроенная проверка здоровья Docker через curl (в Dockerfile)
HEALTHCHECK --interval=10s --timeout=3s --retries=3 CMD curl -sf http://localhost:8080/health || exit 1
Уязвимости образа (scout)
Показать только CVE для которых есть исправление
docker scout cves --only-fixed myapp:latest
Временный отладочный контейнер
Полноценный сетевой отладчик с хостовыми PID и сетью
docker run --rm -it --pid=host --network=host --privileged nicolaka/netshoot
Сборка матрицы из bake-файла
Сборка и push нескольких целей из одного HCL-файла; параллельно, без дублирования групп
docker buildx bake -f docker-bake.hcl --push
Просмотр мультиарх-манифеста
Показывает платформы в списке манифестов без скачивания слоёв; проверка arm64+amd64
docker buildx imagetools inspect <reg>/<name>:tag --format '{{json .Manifest}}'
Сборщик на драйвере container
Создаёт сборщик BuildKit с поддержкой мультиарх и экспорта кэша; драйвер по умолчанию не умеет
docker buildx create --name multi --use --driver docker-container --driver-opt network=host
Передача секрета сборки из файла
Передаёт секрет в BuildKit; виден только в RUN --mount=type=secret,id=token, не в history
docker buildx build --secret id=token,src=token.txt -t <name> .
Удалённый демон по SSH
Запуск docker на удалённом демоне по SSH; не нужен открытый TCP-сокет
docker context create remote --docker host=ssh://<host> && docker context use remote
Усиленный read-only контейнер
Неизменяемый rootfs, запись только в /tmp, запрет эскалации привилегий; усиление контейнера
docker run --read-only --tmpfs /tmp --security-opt no-new-privileges --cap-drop ALL <name>
Слежение за OOM-убийствами
Поток событий OOM в реальном времени для отлова контейнеров, убитых по лимиту памяти
docker events --filter event=oom --filter type=container
no commands match