Виртуализация давно стала нормой в корпоративных дата-центрах: VMware vSphere, Microsoft Hyper-V и KVM делят серверы на десятки независимых машин. Но в последние месяцы всё чаще звучит другое слово – контейнеры. После того как dotCloud открыла исходники Docker, поверх ядерной технологии LXC, разница между двумя подходами перестала быть академической. Разберём, в чём она состоит на самом деле и что это значит при выборе инфраструктуры.

Где проходит граница изоляции

Виртуальная машина – это полная эмуляция оборудования. Гипервизор создаёт виртуальный процессор, память, диск и сеть, а поверх работает собственное ядро гостевой ОС. На одном физическом сервере уживаются Linux и Windows Server, потому что каждая машина считает, что владеет железом единолично. Изоляция здесь жёсткая: сбой или компрометация одной ВМ не затрагивает соседей.

Контейнер устроен иначе. Все контейнеры разделяют ядро хост-системы, а изоляцию обеспечивают механизмы самого ядра Linux – пространства имён (namespaces) и контрольные группы (cgroups). Отдельной гостевой ОС нет, есть лишь изолированный набор процессов со своей файловой системой и сетевым стеком. Отсюда главное ограничение: на Linux-хосте вы запускаете только Linux-нагрузки. Смешать ядра, как в случае с миграцией парка на Windows 8 в корпоративной среде, контейнер не позволит.

Плотность, скорость и накладные расходы

Раз контейнеру не нужно своё ядро и эмуляция железа, он стартует за доли секунды и весит десятки мегабайт вместо гигабайтов образа ВМ. На том же сервере вместо 20–30 виртуальных машин помещаются сотни контейнеров. Для нагрузок, которые приходится часто пересоздавать и масштабировать, это решающее преимущество.

Особенно это заметно на конвейерах обработки данных. Когда мы строили ETL-пайплайны для заказчика, каждый этап трансформации удобно упаковать в отдельный воспроизводимый образ и Docker делает такую сборку предсказуемой. Подробнее о самой технологии и её открытии мы писали в материале про Docker и открытый исходный код.

Расплата за плотность – более тонкая изоляция. Общее ядро означает общую поверхность атаки: уязвимость в ядре потенциально затрагивает все контейнеры разом. Для систем с разными классами данных или жёсткими требованиями регулятора это аргумент в пользу ВМ либо гибридной схемы, когда контейнеры группируют внутри виртуальных машин.

Что выбирать в корпоративной и госинфраструктуре

Простого ответа нет – подходы решают разные задачи.

  • Виртуальные машины оправданы там, где нужна сильная изоляция, разные ОС на одном железе, длинный жизненный цикл систем и зрелые средства резервного копирования и миграции. Это база для legacy-приложений и многоарендных сред.
  • Контейнеры выигрывают на однотипных Linux-нагрузках: микросервисы, веб-приложения, конвейеры данных, среды разработки и тестирования, где важны скорость развёртывания и воспроизводимость.

Технология контейнеров пока молодая: инструменты оркестрации, мониторинга и безопасности только формируются, а практик промышленной эксплуатации мало. Внедрять её в продуктив имеет смысл осознанно, начиная с некритичных контуров.

Вывод

Контейнеры не заменяют виртуальные машины – они закрывают другой класс задач. ВМ дают изоляцию и универсальность, контейнеры – плотность и скорость. Зрелая инфраструктура чаще сочетает оба слоя. Выбор между этими слоями под корпоративную или государственную нагрузку решается на этапе проектирования и сопровождения инфраструктуры, где архитектуру подбирают под конкретные требования к изоляции, плотности и регламентам.