Термины
Виртуализация - технология, позволяющая запускать экземпляры операционных систем (гостевые машины) параллельно и изолированно на единственной хост-машине. При этом каждой гостевой машине предоставляются собственные ресурсы, а гостевая операционная система может быть полностью отличной от операционной системы хост-машины.
Гипервизор - программное обеспечение, позволяющее запускать многожественные гостевы (виртуальные) машины на единственной физической машине (хост-машине), а также обеспечивающее передоставление ресурсов виртуальным машинам.
Гостевая машина - виртуальная машина, запускаемая в изолированной среде системы виртуализации внутри хост-машины.
Гостевая операционная система - операционная система, работающая на гостевой машине.
Хост-машина - машина, в операционной системе которой запускатся система виртуализации и работающие в этой системе виртуализации гостевые машины.
Системы виртуализации в ОС СН
В состав ОС СН входят две системы виртуализации, поддерживающие два описанных выше типа виртуальзации:
- libvirt - система полной виртуальзации;
- docker - система контейнерной вартуализации.
Система контейнерной виртуализации Docker
Термины
Образ - набор упорядоченных слоёв, фактически сумма изменений, внесённых в систему, текущее состояние системы;
Слой - в трактовке Docker набор изменений файловой системы, другими словами - некий моментальный снимок состояния системы. Слои доступны только для чтения, каждое изменение порождает новый слой. Любой слой может использоваться несколькоми образами одновременно;
Контейнер - экземпляр образа docker, образ, находящийся в работе, то есть образ с новым слоем текущих изменений. При работе контейнера все изменния сохраняются в новом слое, а все предыдущие слои остаются неизменными.
Особенности
Система контейнерной виртуализации Docker позиционируется не только как система виртуализации, но как система быстрого распространения и развёртывания приложений.
Традиционный способ развёртывания приложений предполагает:
- передачу пользователю приложения комплекта неких файлов приложения как правило:
- исполнимый файл;
- конфигурационный файл;
- сценарии установки и удаления;
- инструкции по установке;
- выполнение пользователем для развёртывания предоставленных сценариев и инструкций на целевой машине.
При этом, несмотря на то, что разработчиками приложений тратятся значительные усилия на создание сценариев развёртывания, учитывающих всевозможные особенности целевыз машин и возможные конфликты с другими приложениями, выполение действий по установке часто завершается неудачей,
Docker предлагает альтернативный вариант развёртывания: поставщик приложений передаёт пользователям приложений предварительно настроенные контейнеры с приложениями. Эти контейнеры просто запускаются пользователем на целевой машине, предоставляя каждому приложению изолированное преднастроенное окружение для работы. Таким образом исключается существенная часть ошибок, связанных с предварительной настройкой нестандартных пользовательских систем.
При этом, по сравнению с системами полной виртуализации, запуск контейнеров требует значительно меньших вычислительныз ресурсов, и, кроме того, Docker для экономии ресурсов поддерживает систему повторного использования "слоёв". "Слой" в терминологии Docker - это некий моментальный снимок состояния системы, а "образ" - это итоговое состояние системы с учетом cостояний всех подлежащих слоёв. При этом "слои" могут использоваться повторно разными "образами":
Дополнительным эффектом от повторного использования "слоёв" является снижение объёмов передаваемых данных при передаче подготовленных в виде образов прикладных программ: при использовании реестра образов Docker передаваться будет только новые слои, в примере выше - слой "Базовая система Astra Linux SE" будет загружен из репозитория только один раз, далее загружаться будут только новые слои.
Администрирование Docker
Создание собственного реестра образов
Создание собственного образа
Управление слоями в образе
Загрузка образа в реестр