Контейнерная виртуализация в Linux — OpenVZ и LXC

Контейнерная виртуализация или виртуализация на уровне операционной системы — это метод виртуализации, при котором ядро операционной системы поддерживает несколько изолированных экземпляров пространства пользователя, вместо одного. Это снижает накладные расходы и позволяет использовать виртуализацию наиболее эффективно.

Контейнерная виртуализация не использует виртуальные машины, а создает виртуальное окружение с собственным пространством процессов и сетевым стеком. Экземпляры пространств пользователя (часто называемые контейнерами или зонами) с точки зрения пользователя полностью идентичны реальному серверу, но они в своей работе используют один экземпляр ядра операционной системы. Для linux-систем, эта технология может рассматриваться как улучшенная реализация механизма chroot. Ядро обеспечивает полную изолированность контейнеров, поэтому программы из разных контейнеров не могут воздействовать друг на друга.

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

Наиболее распространены сейчас OpenVZ, LXC, FreeBSD jail и Solaris Containers.

OpenVZ

OpenVZ — реализация технологии виртуализации на уровне ОС на ядре Linux. OpenVZ позволяет на одном физическом сервере запускать множество изолированных копий операционной системы, называемых «виртуальные частные серверы» (Virtual Private Servers, VPS) или «виртуальные среды» (Virtual Environments, VE). Поскольку OpenVZ базируется на ядре Linux, в отличие от виртуальных машин (напр. VMware, Parallels Desktop) или паравиртуализационных технологий (напр. Xen), в роли «гостевых» систем могут выступать только дистрибутивы Linux. Накладные расходы на виртуализацию очень малы, и падение производительности составляет всего 1-3 %, по сравнению с обычными Linux-системами. OpenVZ распространяется на условиях лицензии GNU GPL и состоит из модифицированного ядра Linux и пользовательских утилит. OpenVZ является базовой платформой для Virtuozzo — проприетарного продукта Parallels.

LXC

LXC (Linux Containers) — система виртуализации на уровне операционной системы для запуска нескольких изолированных экземпляров операционной системы Linux на одном узле. LXC основана на технологии cgroups, входящей в ядро Linux, начиная с версии 2.6.29. Среди примеров использования — применение в PaaS-хостинге Heroku для изоляции динамических контейнеров (dynos).

Docker — это программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации LXC. Docker позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любой Linux-системе с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами. Docker, например, используется в облачной платформе Cocaine, разработанной компанией Яндекс.