Для чего нужен Docker?
Что проверяют
Понимаете ли вы, какую проблему решает контейнеризация, и умеете ли применить её в тестировании, а не только пересказать определение. Следом обычно спрашивают, чем контейнер отличается от виртуальной машины, и просят поднять стенд или посмотреть логи сервиса.
Как отвечать
Docker упаковывает приложение вместе с зависимостями в образ, из которого на любой машине запускаются одинаковые контейнеры. Контейнер не виртуальная машина: он делит ядро с хостом, а изоляцию дают namespaces и cgroups, поэтому стартует за секунды и весит мало.
Базовые понятия стоит назвать сразу:
- образ и контейнер: образ это неизменяемый шаблон, контейнер его запущенный экземпляр. Данные внутри контейнера исчезают вместе с ним, если не вынесены в volume;
- Dockerfile: рецепт сборки образа;
- Docker Compose: описание нескольких сервисов в
compose.yaml, стенд поднимается командойdocker compose up; - реестр: хранилище образов, например Docker Hub или корпоративный registry.
Для QA польза конкретная. Можно поднять сервис ровно той версии, где воспроизводится баг, запустив образ с нужным тегом. Можно держать изолированные базы для автотестов: Testcontainers (есть для Java, Python, Go, .NET, Node.js) поднимает контейнер на время теста и сам его удаляет. Браузеры для UI-тестов тоже живут в контейнерах: Selenium Grid или официальный образ Playwright. Для разбора проблем пригодятся docker logs, docker exec и docker ps.
Где спотыкаются
Называют контейнер лёгкой виртуалкой и считают, что изоляция полная. Ядро общее, а контейнер, запущенный с --privileged, почти не отделён от хоста.
Говорят, что с Docker «на проде будет так же». Одинаков только образ, а переменные окружения, данные, сеть и нагрузка на стенде и в проде могут отличаться.
Используют тег latest в тестовом окружении. Сегодня и через неделю под ним разные версии, и упавший тест потом не воспроизвести.