Термины
Виртуализация - технология, позволяющая запускать экземпляры операционных систем (гостевые машины) параллельно и изолированно на единственной хост-машине. При этом каждой гостевой машине предоставляются собственные ресурсы, а гостевая операционная система может быть полностью отличной от операционной системы хост-машины.
Гипервизор - программное обеспечение, позволяющее запускать многожественные гостевы (виртуальные) машины на единственной физической машине (хост-машине), а также обеспечивающее передоставление ресурсов виртуальным машинам.
Гостевая машина - виртуальная машина, запускаемая в изолированной среде системы виртуализации внутри хост-машины.
Гостевая операционная система - операционная система, работающая на гостевой машине.
Хост-машина - машина, в операционной системе которой запускатся система виртуализации и работающие в этой системе виртуализации гостевые машины.
Системы виртуализации в ОС СН
В состав ОС СН входят две системы виртуализации, поддерживающие два описанных выше типа виртуальзации:
- libvirt - система полной виртуальзации;
- docker - система контейнерной вартуализации.
Система контейнерной виртуализации Docker
Термины
Образ - набор упорядоченных слоёв, фактически сумма изменений, внесённых в систему, текущее состояние системы;
Слой - в трактовке Docker набор изменений файловой системы, другими словами - некий моментальный снимок состояния системы. Слои доступны только для чтения, каждое изменение порождает новый слой. Любой слой может использоваться несколькоми образами одновременно;
Контейнер - экземпляр образа docker, образ, находящийся в работе, то есть образ с новым слоем текущих изменений. При работе контейнера все изменния сохраняются в новом слое, а все предыдущие слои остаются неизменными;
Реестр образов - сетевое хранилище подготовленных образов, доступных для загрузки на целевые машины.
Особенности
Система контейнерной виртуализации Docker позиционируется не только как система виртуализации, но как система быстрого распространения и развёртывания приложений.
Традиционный способ развёртывания приложений предполагает:
- передачу пользователю приложения комплекта неких файлов приложения как правило:
- исполнимый файл;
- конфигурационный файл;
- сценарии установки и удаления;
- инструкции по установке;
- выполнение пользователем для развёртывания предоставленных сценариев и инструкций на целевой машине.
При этом, несмотря на то, что разработчиками приложений тратятся значительные усилия на создание сценариев развёртывания, учитывающих всевозможные особенности целевыз машин и возможные конфликты с другими приложениями, выполение действий по установке часто завершается неудачей,
Docker предлагает альтернативный вариант развёртывания: поставщик приложений передаёт пользователям приложений предварительно настроенные контейнеры с приложениями. Эти контейнеры просто запускаются пользователем на целевой машине, предоставляя каждому приложению изолированное преднастроенное окружение для работы. Таким образом исключается существенная часть ошибок, связанных с предварительной настройкой нестандартных пользовательских систем. Хорошим примером использования возможностей Docker по быстрому развёртыванию приложений явлется пример развёртывания собственного реестра образов, выполняемого путём простого скачивания подготовленного образа (см. раздел "Администрировани" - "Создание собственного реестра образов").
При этом, по сравнению с системами полной виртуализации, запуск контейнеров требует значительно меньших вычислительныз ресурсов, и, кроме того, Docker для экономии ресурсов поддерживает систему повторного использования "слоёв". "Слой" в терминологии Docker - это некий моментальный снимок состояния системы, а "образ" - это итоговое состояние системы с учетом cостояний всех подлежащих слоёв. При этом "слои" могут использоваться повторно разными "образами":
Дополнительным эффектом от повторного использования "слоёв" является снижение объёмов передаваемых данных при передаче подготовленных в виде образов прикладных программ: при использовании реестра образов Docker передаваться будет только новые слои, в примере выше - слой "Базовая система Astra Linux SE" будет загружен из репозитория только один раз, далее загружаться будут только новые слои.
Администрирование Docker
Установка Docker
См. статью: Установка docker в ОС Astra Linux
Создание собственного реестра образов
Загрузить подготовленный образ Docker, содержащий приложение "Реестр образов Docker":
sudo docker run -d -p 5000:5000 --restart=always --name registry registry:2
Unable to find image 'registry:2' locally
2: Pulling from library/registry
0a6724ff3fcd: Pull complete
d550a247d74f: Pull complete
1a938458ca36: Pull complete
acd758c36fc9: Pull complete
9af6d68b484a: Pull complete
Digest: sha256:d5459fcb27aecc752520df4b492b08358a1912fcdfa454f7d2101d4b09991daa
Status: Downloaded newer image for registry:2
782dbf275b4521715930a5478c3af2ed3e77614fc6042d03fff9a27740fafd97
После выполнения указанной команды локальный реестр образов готов к работе.
Для остановки работы реестра:
Создание собственного образа
См. статью: Создание собственного образа для использования в Docker
Управление слоями в образе
Загрузка образа в реестр
Получить список доступных образов:
REPOSITORY TAG IMAGE ID CREATED SIZE
wiki/astralinux se17rc5 5d69ce8720a7 25 hours ago 318MB
registry 2 678dfa38fcfa 12 days ago 26.2MB
localhost:5000/hello-world-se latest bf756fb1ae65 12 months ago 13.3kB
hello-world latest bf756fb1ae65 12 months ago 13.3kB
REPOSITORY TAG IMAGE ID CREATED SIZE
wiki/astralinux se17rc5 5d69ce8720a7 25 hours ago 318MB
localhost:5000/se17rc5 latest 5d69ce8720a7 25 hours ago 318MB
registry 2 678dfa38fcfa 12 days ago 26.2MB
localhost:5000/hello-world-se latest bf756fb1ae65 12 months ago 13.3kB
hello-world latest bf756fb1ae65 12 months ago 13.3kB
The push refers to repository [localhost:5000/se17rc5]
d5f516170dbe: Pushed
latest: digest: sha256:8d12b1c9ebe3b3060734965bbd7214a0063633261bf1da17d3caf50ed4f1f534 size: 529