Если вы работаете в тестировании, то Docker должен быть в вашем ежедневном инструменте так же прочно, как баг-репорт в Jira. Современный QA — это не просто “прокликать” интерфейс. Мы работаем с API, БД, UI-автотестами, моками и целыми микросервисами. А значит, нам нужно уметь быстро разворачивать изолированные и воспроизводимые окружения.

В этой статье — сжатая, но насыщенная шпаргалка по Docker-командам, которые особенно полезны тестировщику.

Часто используемые команды Docker (для QA)

Категория

Команда

Назначение

Инициализация

docker init

Сгенерировать Dockerfile, .dockerignore, compose и пр. ( доступна начиная с Docker 20.10+ )

Сборка образа

docker build -t имя_образа .

Собрать образ из Dockerfile

Загрузка образа

docker pull postgres:15

Скачать нужный образ из Docker Hub

Запуск

docker run -d -p 5432:5432 postgres

Запустить контейнер с пробросом порта

docker run --rm имя_образа

Запустить и удалить контейнер после выполнения

docker run -it имя_образа bash

Запуск в интерактивном режиме с терминалом

Запуск тестов

docker run имя_образа pytest

Запустить тесты внутри контейнера

docker run --rm -v $(pwd):/tests имя_образа pytest

Прокинуть тесты в контейнер и запустить их

Выход

exit или Ctrl+D

Выйти из контейнера (при интерактивной сессии)

Образы

docker images

Список локальных образов

docker rmi имя_образа

Удалить образ

Контейнеры

docker ps

Список работающих контейнеров

docker ps -a

Все (в т.ч. остановленные) контейнеры

docker stop имя_контейнера

Остановить контейнер

docker rm имя_контейнера

Удалить контейнер

Volumes

docker volume create имя_тома

Создать том для сохранения данных между перезапусками

docker run -v имя_тома:/var/lib/postgresql/data postgres

Применить том к контейнеру

Отладка / Shell

docker exec -it имя_контейнера bash

Подключиться к работающему контейнеру

docker inspect имя_контейнера

Посмотреть подробную информацию о контейнере

Копирование

docker cp ./тест.json контейнер:/data/тест.json

Скопировать файл внутрь контейнера

docker cp контейнер:/logs/output.log ./output.log

Забрать файл из контейнера

Логи

docker logs имя_контейнера

Посмотреть логи

docker logs -f имя_контейнера

Следить за логами в реальном времени

Очистка

docker system prune -a

Удалить неиспользуемые образы, контейнеры и сети

Docker Compose

docker-compose up -d

Поднять окружение из docker-compose.yml

docker-compose down

Остановить и удалить всё, что было запущено

Типовой сценарий для тестировщика

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

? Если статья оказалась полезной — сохраните, поделитесь с коллегами или напишите в комментариях, какие команды и приёмы вы используете в своей работе.

Комментарии (0)