Docker представил Moby и LinuxKit для построения произвольных систем контейнерной изоляции

Компания Docker представила два новых проекта Moby и LinuxKit, предоставляющих инструменты для созданий произвольных систем контейнерной изоляции. Moby позволяет комбинировать готовые компоненты и фреймворки для создания систем на базе контейнеров, а LinuxKit предоставляет средства для формирования минимальной операционной системы для запуска контейнеров. Код написан на языке Go и распространяется (LinuxKit, Moby) под лицензией Apache 2.0.

Moby даёт возможность манипулировать готовыми блоками для построения специализированными системы контейнерной изоляции по аналогии с конструктором Лего. Предоставляются различные варианты компонентов, охватывающих все аспекты работы систем контейнерной изоляции, включая ОС, runtime, средства оркестровки, инструменты управления инфраструктурой, сетевые подсистемы, хранилища, средства безопасности, сборочные инструменты и механизмы доставки образов. Каждый компонент оформлен в виде контейнера, поэтому создание новых компонентов производится через подготовку OCI-совместимых контейнеров.

Кроме коллекции компонентов, Moby также предлагает специальный инструментарий, который даёт возможность собрать компоненты в форму, котовую для выполнения на выбранных архитектурах и платформах: для установки на конечное оборудование (x86, ARM), в виде исполняемых файлов для Linux, macOS и Windows или образов виртуальных машин для популярных облачных платформ и систем виртуализации. Завершающим звеном является набор эталонных схем компоновки, которые можно использовать в качестве шаблона для связывания компонентов в рабочую систему.

Потребителю предоставляются гибкие возможности для экспериментов и подбора оптимальной конфигурации — каждый компонент в шаблоне можно заменять на один из предлагаемых альтернативных вариантов. Например, можно выбрать технологию изоляции или систему оркестровки. Пользователи Moby получают возможность не ограничиваться рамками конкретных продуктов и построить свою инфраструктуру для запуска контейнеров комбинируя разные подходы с учётом всех своих пожеланий.

LinuxKit дополняет Moby и представляет собой тулкит для сборки защищённых, переносимых и компактных операционных систем для Linux-контейнеров. При помощи LinuxKit администратор может сформировать образ ОС, содержащий только минимальный набор компонентов, необходимых для запуска контейнеров. Все системные сервисы в LinuxKit оформлены в виде контейнеров и могут быть заменены или удалены. Минимальный размер сборки, достаточно для запуска контейнеров —
35 Мб.

Конфигурация определяется в виде YAML-спецификации, на основе которой LinuxKit может подготовить загрузочный образ. В спецификации указывается ядро, процесс инициализации, список контейнеров для запуска, набор системных сервисов, дополнительные файлы для включения в сборку и формат вывода (например, ISO).

В качестве основы используются компоненты пространства пользователя дистрибутива Alpine Linux, в том числе системной библиотеки Musl, набора утилит BusyBox. Для повышения безопасности испльзуются патчи PaX и SSP (Stack Smashing Protection). В перспективе планируется переписать системные компоненты на безопасных языках Rust, Go или OCaml и выполнять их в режиме максимальной изоляции, благодаря сборке в виде самодостаточных «unikernel«, продвигаемых проектом MirageOS. По мере развития всё больше системных компонентов будут переписываться из Си на безопасные языки и поставляться в форме unikernel.

Особенности LinuxKit:

  • Ориентация на предоставление максимальной безопасности по умолчанию, без негативного влияния на удобство работы;
  • Все составные части заменяемы и настраиваемы;
  • Постоянная инфраструктура для сборки Linux-дистрибутивов;
  • Работа без сохранения состояния (stateless), но с возможностью подключения отдельного постоянного хранилища;
  • Простой инструментарий и простые средства интеграции;
  • Построение на основе контейнеров и для выполнения контейнеров;
  • Рассчитан на сборку и выполнение кластерных приложений, но без привязки к конкретным средствам оркестровки, таким как Docker или Kubernetes;
  • Создан в процессе разработки Docker Editions, но преобразован в тулкит общего назначения;
  • Рассчитан на использования внешних управляющих инструментариев, таких как Infrakit.

Docker намерен перевести все свои открытые проекты в проект Moby, в том числе разбить движок на серию компонентов, отделить интерфейс пользователя и SDK, открыт новые инструменты, используемые в процессе работы над платформой Docker и внедрить сфокусированную на сообществе модель управления, структура которой будет напоминать Fedora для достижения оптимального баланса между интересами сообщества и корпоративного спонсора.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.