В чем разница между гипервизором (клиентом для ВМ) и Docker?

«В чем разница между гипервизором (клиентом для ВМ) и Docker?» — вопрос из категории DevOps и инфраструктура, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Гипервизор (или клиент управления виртуальными машинами) и Docker — это технологии виртуализации разных уровней, решающие разные задачи.

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

  • Примеры: VMware ESXi, Microsoft Hyper-V, KVM, Oracle VirtualBox.
  • Изоляция: Полная, на уровне аппаратуры.
  • Накладные расходы: Высокие — каждая ВМ требует отдельной ОС (гигабайты памяти, время на патчинг и загрузку).
  • Использование: Когда нужна полная изоляция, разные версии ядра ОС или эмуляция специфичного железа.

Docker — это платформа контейнеризации, которая виртуализирует на уровне операционной системы. Все контейнеры на хосте разделяют ядро основной (хостовой) ОС, но имеют изолированные пространства пользователя (процессы, сеть, файловая система).

  • Примеры: Docker Engine, containerd, Podman.
  • Изоляция: На уровне процессов (namespaces и cgroups).
  • Накладные расходы: Минимальные — контейнеры разделяют ядро, образы слоистые и легкие (мегабайты).
  • Использование: Для упаковки и изолированного запуска приложений (микросервисов) с максимальной плотностью и скоростью развертывания.

Практическое сравнение на примере:

# Docker: Запуск Nginx в контейнере (секунды, общий образ ~50MB)
docker run -d -p 80:80 --name my-nginx nginx:alpine

# Гипервизор (KVM): Создание ВМ с Ubuntu и установка Nginx
# Требует: загрузка ОС (~1-2 ГБ образа), установка пакетов, конфигурация (минуты).

В моей работе: Я использую Docker для сборки, тестирования и развертывания микросервисов в CI/CD. Гипервизоры (чаще KVM или VMware) применяю для инфраструктурных сервисов (базы данных в высокой доступности, bastion-хосты) или legacy-приложений, требующих специфичной ОС. В облаках (AWS, GCP) эти технологии часто комбинируются: инстансы ВМ запускаются на гипервизорах провайдера, а внутри них уже работают Docker-контейнеры с приложениями.