Виртуальные машины предоставляют виртуальное оборудование, которое гостевая ОС использует для запуска приложений. Несколько приложений работают на одной виртуальной машине, но они логически разделены и изолированы. Используя контейнеры, разработчики берут оптимизированную базовую файловую систему ОС и размещают только необходимые двоичные файлы и библиотеки, от которых зависит приложение.
Рисунок 7 – Структура контейнера в среде виртуализации
С помощью виртуализации несколько физических машин можно объединить в одну физическую машину, на которой работает несколько виртуальных машин. Каждая виртуальная машина предоставляет виртуальное оборудование, которое гостевая ОС использует для запуска приложений. Несколько приложений работают на одной виртуальной машине, но эти приложения по-прежнему логически разделены и изолированы. Проблема с виртуальными машинами заключается в том, что они имеют размер от сотен мегабайт до гигабайт и содержат множество двоичных файлов и библиотек, которые не имеют отношения к основному приложению, работающему на них. Используя контейнеры, разработчики берут оптимизированную базовую файловую систему ОС и размещают только необходимые двоичные файлы и библиотеки, от которых зависит приложение. Когда контейнер запускается как процесс в ОС узла контейнера, контейнер может видеть свои зависимости и пакеты базовой ОС. Контейнер изолирован от всех других процессов в операционной системе узла контейнера. Контейнерные процессы — это единственные процессы, которые работают в минимальной системе. С точки зрения хост-ОС контейнера, контейнер — это еще один запущенный процесс, но он имеет ограниченное представление файловой системы и потенциально ограниченный ЦП и память.
Виртуальные машины и контейнеры работают по-разному (таблица 4).
Таблица 4 – Сравнение виртуальных машин и контейнеров
...