Docker представил Moby и LinuxKit для построения произвольных систем контейнерной изоляции
Moby даёт возможность манипулировать готовыми блоками для построения специализированных систем контейнерной изоляции, создавая результирующую систему по кирпичикам по аналогии с конструктором Лего. Предоставляются различные варианты компонентов, охватывающих все аспекты работы систем контейнерной изоляции, включая ОС, runtime, средства оркестровки, инструменты управления инфраструктурой, сетевые подсистемы, хранилища, средства безопасности, сборочные инструменты и механизмы доставки образов. Каждый компонент оформлен в виде контейнера, поэтому создание новых компонентов производится через подготовку OCI-совместимых контейнеров.
Кроме коллекции компонентов, Moby также предлагает специальный инструментарий, который даёт возможность собрать компоненты в форму, готовую для выполнения на выбранных архитектурах и платформах: для установки на конечное оборудование (x86, ARM), в виде исполняемых файлов для Linux, macOS и Windows или образов виртуальных машин для популярных облачных платформ и систем виртуализации. Завершающим звеном является набор эталонных схем компоновки Moby Origin, которые можно использовать в качестве шаблона для связывания компонентов в рабочую систему. В частности, доступен шаблон для формирования из компонентов Moby типовой системы Docker.
Потребителю предоставляются гибкие возможности для экспериментов и подбора оптимальной конфигурации - каждый компонент в шаблоне можно заменять на один из предлагаемых альтернативных вариантов. Например, можно выбрать технологию изоляции или систему оркестровки. Пользователи Moby получают возможность не ограничиваться рамками конкретных продуктов и построить свою инфраструктуру для запуска контейнеров, комбинируя разные подходы с учётом всех своих пожеланий.
LinuxKit дополняет Moby и представляет собой тулкит для сборки защищённых, переносимых и компактных операционных систем для Linux-контейнеров. При помощи LinuxKit администратор может сформировать образ ОС, содержащий только минимально необходимый набор компонентов, достаточных для запуска контейнеров. Все системные сервисы в LinuxKit оформлены в виде контейнеров и могут быть заменены или удалены. Минимальный размер сборки, достаточной для запуска контейнеров - 35 Мб.
Конфигурация сборки определяется в виде YAML-спецификации, на основе которой LinuxKit может подготовить загрузочный образ. В спецификации указывается ядро, процесс инициализации, список контейнеров для запуска, набор системных сервисов, дополнительные файлы для включения в сборку и формат вывода (например, ISO). В качестве основы используются компоненты пространства пользователя дистрибутива Alpine Linux, в том числе системной библиотеки Musl.
Для повышения безопасности используются патчи PaX и SSP (Stack Smashing Protection, -fstack-protector), а для полноценного использования ASLR при сборке формируются исполняемые файлы PIE (Position-Independent Executable). В перспективе планируется переписать системные компоненты на безопасных языках Rust, Go или OCaml и выполнять их в режиме максимальной изоляции, благодаря сборке в виде самодостаточных "unikernel", развитием которых занимался перешедший в руки Docker проект MirageOS. Пока на базе unikernel реализован только сервис dhcp, но по мере развития всё больше системных компонентов будут переписываться из Си на безопасные языки и поставляться в форме unikernel.
Особенности LinuxKit:
- Ориентация на предоставление максимальной безопасности по умолчанию, без негативного влияния на удобство работы;
- Все составные части могут быть заменены и перенастроены;
- Постоянная инфраструктура для сборки Linux-дистрибутивов;
- Работа без сохранения состояния (stateless), но с возможностью подключения отдельного постоянного хранилища;
- Простой инструментарий и простые средства интеграции;
- Построение на основе контейнеров и для выполнения контейнеров;
- Рассчитан на сборку и выполнение кластерных приложений, но без привязки к конкретным средствам оркестровки, таким как Docker или Kubernetes;
- Создан в процессе разработки Docker Editions, но преобразован в тулкит общего назначения;
- Рассчитан на использования внешних управляющих инструментариев, таких как Infrakit.
Docker намерен перевести все свои открытые разработки в проект Moby, в том числе разбить движок на серию компонентов, отделить интерфейс пользователя и SDK, открыть новые инструменты, используемые в процессе работы над платформой Docker. Также планируется внедрить сфокусированную на сообществе модель управления, структура которой будет напоминать Fedora для достижения оптимального баланса между интересами сообщества и корпоративного спонсора.
Источник: http://www.opennet.ru/opennews/art.shtml?num=46420
|
0 | Tweet | Нравится |
|