Если вы работаете в тестировании, то Docker должен быть в вашем ежедневном инструменте так же прочно, как баг-репорт в Jira. Современный QA — это не просто “прокликать” интерфейс. Мы работаем с API, БД, UI-автотестами, моками и целыми микросервисами. А значит, нам нужно уметь быстро разворачивать изолированные и воспроизводимые окружения.
В этой статье — сжатая, но насыщенная шпаргалка по Docker-командам, которые особенно полезны тестировщику.
Часто используемые команды Docker (для QA)
Категория |
Команда |
Назначение |
---|---|---|
Инициализация |
|
Сгенерировать |
Сборка образа |
|
Собрать образ из |
Загрузка образа |
|
Скачать нужный образ из Docker Hub |
Запуск |
|
Запустить контейнер с пробросом порта |
|
Запустить и удалить контейнер после выполнения |
|
|
Запуск в интерактивном режиме с терминалом |
|
Запуск тестов |
|
Запустить тесты внутри контейнера |
|
Прокинуть тесты в контейнер и запустить их |
|
Выход |
|
Выйти из контейнера (при интерактивной сессии) |
Образы |
|
Список локальных образов |
|
Удалить образ |
|
Контейнеры |
|
Список работающих контейнеров |
|
Все (в т.ч. остановленные) контейнеры |
|
|
Остановить контейнер |
|
|
Удалить контейнер |
|
Volumes |
|
Создать том для сохранения данных между перезапусками |
|
Применить том к контейнеру |
|
Отладка / Shell |
|
Подключиться к работающему контейнеру |
|
Посмотреть подробную информацию о контейнере |
|
Копирование |
|
Скопировать файл внутрь контейнера |
|
Забрать файл из контейнера |
|
Логи |
|
Посмотреть логи |
|
Следить за логами в реальном времени |
|
Очистка |
|
Удалить неиспользуемые образы, контейнеры и сети |
Docker Compose |
|
Поднять окружение из |
|
Остановить и удалить всё, что было запущено |
Типовой сценарий для тестировщика
docker init # Сгенерировать стартовый шаблон Dockerfile
docker build -t playwright-tests . # Собрать образ с автотестами
docker run -d --name ui-tests playwright-tests # Запустить контейнер с тестами в фоне
docker logs -f ui-tests # Следим за логами тестов
docker pause ui-tests # Временно "заморозили" контейнер с тестами
docker unpause ui-tests # Возобновили работу контейнера
docker stop ui-tests # Корректно остановили контейнер
docker rm ui-tests # Удалили контейнер
Быстро почистить всё ненужное:
docker system prune -a
⚠️ Удалит всё неиспользуемое: образы, остановленные контейнеры, тома и сети. Использовать с осторожностью!
Ускорение сборки образов с помощью кэша и очистки
В процессе разработки и тестирования важно быстро пересобирать Docker-образы, особенно если меняются только тесты или код, а зависимости остаются прежними. Для этого Docker предлагает инструменты для кэширования и очистки.
Управление кэшем при сборке
Флаг
--no-cache
при сборке полностью отключает кэш и заставляет Docker собирать образ с нуля:
docker build --no-cache -t my-image .
Чтобы ускорить повторные сборки, например при установке Python-зависимостей, в
Dockerfile
можно использовать функционал BuildKit:
RUN --mount=type=cache,target=/root/.cache/pip \
pip install -r requirements.txt
Эта конструкция сохраняет кэш pip между сборками, что значительно сокращает время установки зависимостей при последующих сборках.
Такой подход позволяет быстро собирать образы с минимальными затратами времени и ресурсов, что особенно важно при частом запуске автотестов в Docker.
Очистка старого кэша
Со временем кэш Docker накапливается и занимает место. Чтобы очистить устаревший кэш, используйте команду:
docker builder prune --filter 'until=48h'
Она удалит все неиспользуемые слои, которые старше 48 часов. Это помогает поддерживать систему в порядке и освобождать дисковое пространство.
Оптимизация сборки с помощью .dockerignore
При сборке Docker-образа важно контролировать, какие файлы и папки попадают в контекст сборки. Большой или ненужный контекст значительно замедляет процесс и увеличивает размер образа.
Для этого в проекте используется файл .dockerignore
— аналог .gitignore
, но для Docker. Он позволяет исключить из контекста сборки файлы и папки, которые не нужны внутри контейнера, например:
Локальные настройки IDE (
.vscode/
,.idea/
)Логи и временные файлы (
*.log
,tmp/
)Большие папки с результатами тестов или сборок (
node_modules/
,dist/
)Файлы конфигурации, секреты, не относящиеся к приложению
Пример .dockerignore:
.vscode/
.idea/
*.log
tmp/
dist/
node_modules/
.env
Зачем это важно?
Уменьшается размер контекста сборки — Docker быстрее отправляет данные на сборку.
Образ получается легче и чище — не содержит лишних файлов.
Безопасность — исключаются файлы с секретами или конфигурацией, которые не должны попасть в контейнер.
Использование .dockerignore
— простой, но эффективный способ сделать сборку быстрее и безопаснее, особенно при частом запуске автотестов в Docker.
Заключение
Знание Docker делает тестировщика:
Самостоятельным — не нужно ждать DevOps'а для поднятия окружения
Эффективным — автотесты работают быстрее и стабильнее в изоляции
Гибким — легко проверять баги в нужной версии БД, API или UI
? Если статья оказалась полезной — сохраните, поделитесь с коллегами или напишите в комментариях, какие команды и приёмы вы используете в своей работе.