Что такое гипервизор в контексте Docker?

«Что такое гипервизор в контексте Docker?» — вопрос из категории Архитектура, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Гипервизор — это программное обеспечение (тип 1 — "bare-metal" как Hyper-V, ESXi; или тип 2 — "hosted" как VirtualBox), которое создает и управляет виртуальными машинами (ВМ), эмулируя полноценное аппаратное обеспечение для каждой гостевой ОС.

При чем здесь Docker? Docker использует контейнеризацию, а не полноценную виртуализацию. Контейнеры разделяют ядро хостовой ОС, что делает их гораздо легче и быстрее ВМ.

Однако, на Windows и macOS есть нюанс: Поскольку ядро Linux отличается от ядер Windows/macOS, для запуска Linux-контейнеров на этих системах Docker Desktop использует легковесную Linux-виртуальную машину. Для её создания и управления как раз и используется гипервизор:

  • Windows: Hyper-V или WSL 2 (который также использует гипервизор Microsoft).
  • macOS: HyperKit (легковесный гипервизор на базе xhyve).

Практическое значение для тестировщика:

  1. Производительность: Контейнеры в такой VM запускаются почти мгновенно по сравнению с полноценными ВМ, что ускоряет подготовку тестового окружения.
  2. Совместимость: Позволяет тестировать Linux-приложения и их контейнеризованные сборки на машинах с Windows/Mac.
  3. Изоляция: Гипервизор обеспечивает хорошую изоляцию этой VM от основной системы.

Пример настройки для тестов:

# На Windows с WSL2 можно напрямую тестировать взаимодействие
# Запуск тестового контейнера с приложением
docker run -d --name test-app -p 8080:80 my-test-image:latest

# Запуск контейнера с автотестами (Selenium, Cypress, etc.),
# который будет обращаться к test-app по сети
docker run --network host my-autotests-image

# Проверка логов тестового приложения извне
docker logs test-app

На Linux-серверах, где проходит большинство CI/CD пайплайнов, Docker работает нативно без гипервизора, что еще больше ускоряет процессы.