Контейнерная виртуализация в 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, разработанной компанией Яндекс.

Cтатьи по теме:

Хостинг сайтов и веб-приложений
Это услуга по предоставлению дискового пространства и вычислительных ресурсов на сервере, постоянно находящемся в сети интернет. Обычно под понятием услуги хостинга подразумевают как минимум услугу размещения файлов сайта на сервере, на котором запущено ПО, необходимое для обработки запросов к этим файлам (веб-сервер).
Виртуальный хостинг — экономное решение, но практически без гарантий
Виртуальный хостинг — самый экономичный, но при этом и наименее надёжный вариант размещения сайта. Его достаточно только для размещения простых ненагруженных веб-сайтов, для которых не особо важны производительность и отказоустойчивость.
Виртуальный выделенный сервер (VPS или VDS)
Для небольших проектов это оптимальный вариант по соотношению «цена / качество». Клиенту предоставляется виртуальная машина с гарантией выделения места на диске, оперативной памяти и процессорного времени сервера.
Выделенные сервера, кластеры и облачные решения
Серьёзные проекты требуют серьёзных хостинговых решений. Для средних проектов может хватить одного выделенного сервера, а для больших нагруженных сайтов нужны кластерные или облачные решения.
Рекомендации по выбору хостинга
От правильности выбора хостинга зависит дальнейшая работоспособность сайта и его доступность, поэтому к этому вопросу надо отнестись достаточно серьёзно.
Серверное программное обеспечение
На серверах устанавливается программное обеспечение, которое требуется для работы сайта и других служб домена, для обслуживания и мониторинга, а также для защиты от взлома и устойчивости к нагрузкам.
Безопасность сайтов и веб-приложений
​Под безопасностью веб-сервисов, как правило, понимается обеспечение сохранности данных и их недоступность для посторонних лиц, а также способность приложения сохранять работоспособность при кибератаках и не подвергаться заражению вирусами.

Тематические технологии:

Docker
Kubernetes
Red Hat Enterprise Linux
CentOS
Система управления конфигурациями Ansible
Веб-сервер NGINX
Веб-сервер Apache