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

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

Существуют как реализации, ориентированные на создание практически полноценных экземпляров операционных систем (Solaris Containers, контейнеры Virtuozzo, OpenVZ), так и варианты, фокусирующиеся на изоляции отдельных сервисов с минимальным операционным окружением (jail, Docker).

Реализации Механизм Операционная система Лицензия Год выпуска Особенности Изоляция файловой системы Квоты на пространство хранения Лимиты на ввод-вывод Лимиты на память Квоты ЦПУ Изоляция сети Живая миграция chroot встроено в большинство Unix-подобных операционных систем в зависимости от лицензии на операционную систему 1982 FreeBSD Jail FreeBSD BSD 2000 Solaris Containers Solaris, OpenSolaris CDDL 2005 Контейнеры Solaris 10 имеют изолированную сеть, когда конкретный NIC приписывается контейнеру («exclusive IP»). Сеть не изолирована, но виртуализирована, то есть каждая виртуальная среда имеет свой IP-адрес, брандмауэр и так далее. Изоляция сети должна достигаться на аппаратном уровне. В OpenSolaris изоляция сети реализована, см. OpenSolaris Network Virtualization and Resource Control и . Реализована холодная миграция. FreeVPS Linux GNU GPL - iCore Virtual Accounts Windows XP Проприетарное 2008 Linux GNU GPL v.2 - Сеть изолирована. LXC Linux GNU GPL v.2 2008 OpenVZ Linux GNU GPL v.2 2005 Доступна в ядре 2.6.18-028stable021. Сеть не изолирована, а виртуализована, то есть каждая виртуальная среда имеет свой IP-адрес, файрвол и так далее. Изоляция сети не поддерживается и должна быть реализована на аппаратном уровне. Virtuozzo Containers Linux, Microsoft Windows Проприетарное - С версии 4.0, январь 2008. OpenBSD, NetBSD BSD - AIX Проприетарное 2007 С версии TL 02. См. . См. Docker Linux, FreeBSD, Windows, macOS Apache 2.0 2013 Podman Linux, Windows, macOS Apache 2.0 2019

Примечания

Ссылки Виртуализация: технологические подходы, PC Magazine 11.05.2009 Технологические подходы к виртуализации ПО. Андрей Колесов, BYTE, 16.06.2009

http://lass.cs.umass.edu/~shenoy/courses/spring07/lectures/Lec05.pdf

Категория:Виртуализация Категория:Программы для контейнеризации