Проект CoreOS, развивающий основанное идеях контейнерной изоляции серверное окружение, анонсировал создание нового инструментария для управления созданием, запуском и выполнением изолированных контейнеров - Rocket,
выступающего в качестве более безопасной, переносимой и адаптированной
для серверного применения альтернативы Docker. Rocket нацелен на
манипуляцию контейнерами, построенными в соответствии со спецификацией App Container, также предложенной проектом CoreOS и нацеленной на создание универсального переносимого формата контейнеров.
Наиболее существенные отличия Rocket от Docker заключаются в использовании иной модели выполнения, позволяющей достигнуть значительно более высокого уровня защищённости. В Docker все операции проводятся с участием одного централизованного фонового процесса, что создаёт серьезные потенциальные проблемы с безопасностью, устранить которые можно лишь путём полной переработки организации работы. Также утверждается, что последнее время Docker отклонился от первоначальных задач и стал развивать функции, выходящие за рамки средств управления контейнерами, превращаясь в излишне усложнённую платформу.
Rocket сосредоточен только на управлении контейнерами и обеспечении их максимальной переносимости. В Rocket применяется многоуровневая модульная архитектура, разделяющая операции работы с контейнером, на отдельные стадии, отдельно обрабатывающие этапы настройки файловой системы, подготовки исполняемого окружения и запуска приложений в контейнере. Кроме безопасности подобный подход также позволяет добиться хорошей расширяемости за счёт возможности реализации дополнительных функций через подключение дополнений.
Выделяются три основные стадии запуска контейнера:
Следование универсальной спецификации App Container, определяющей окружающие контейнер службы, позволяет создавать независимые собственные реализации, совместимые с Rocket. Более того, в будущем, когда App Container достигнет зрелости, планируется подготовить реализацию данной спецификации для Docker, что позволит обеспечить переносимость обоих проектов.
source1
source2
Наиболее существенные отличия Rocket от Docker заключаются в использовании иной модели выполнения, позволяющей достигнуть значительно более высокого уровня защищённости. В Docker все операции проводятся с участием одного централизованного фонового процесса, что создаёт серьезные потенциальные проблемы с безопасностью, устранить которые можно лишь путём полной переработки организации работы. Также утверждается, что последнее время Docker отклонился от первоначальных задач и стал развивать функции, выходящие за рамки средств управления контейнерами, превращаясь в излишне усложнённую платформу.
Rocket сосредоточен только на управлении контейнерами и обеспечении их максимальной переносимости. В Rocket применяется многоуровневая модульная архитектура, разделяющая операции работы с контейнером, на отдельные стадии, отдельно обрабатывающие этапы настройки файловой системы, подготовки исполняемого окружения и запуска приложений в контейнере. Кроме безопасности подобный подход также позволяет добиться хорошей расширяемости за счёт возможности реализации дополнительных функций через подключение дополнений.
Выделяются три основные стадии запуска контейнера:
- Нулевая стадия, обработка которой производится силами утилиты rkt без привлечения дополнительных средств. На данной стадии производится начальная подготовка контейнера: генерация UUID и манифеста, создания файловой системы для контейнера, настройка директорий для выполнения следующих стадий, копирование исполняемого файла первой стадии в ФС контейнера, извлечение заданных ACI (App Container Image), распаковка образов и копирование приложений в директории третьей стадии;
- Первая стадия, работа которой обеспечивается отдельным исполняемым файлом, имеющим полномочия настройки cgroups, запуска процессов и выполнения операций под пользователем root. На данной стадии осуществляется создание исполняемой группы на основе ФС, подготовленной в нулевой стадии, установка cgroups, пространств имён и точек монтирования. Настройка производится через генерацию unit-файлов systemd и использование systemd-nspawn для организации работы окружения;
- Вторая стадия, на которой производится непосредственный запуск приложения в подготовленном контейнере. В частности, на данной стадии выполняется процесс инициализации содержимого контейнера, описанный в манифесте запуска приложения (Application Manifest).
- App Container Image - определяет образ, содержащий все необходимые элементы для запуска контейнера приложения. Для защиты применяется проверка по цифровой подписи и опционально шифрование, что позволяет использовать для распространения образов публичные сети хранения и BitTorrent;
- App Container Runtime - определяет окружение для запуска контейнера приложения;
- App Container Discovery - федеративный протокол для поиска и загрузки образов контейнеров приложений.
Следование универсальной спецификации App Container, определяющей окружающие контейнер службы, позволяет создавать независимые собственные реализации, совместимые с Rocket. Более того, в будущем, когда App Container достигнет зрелости, планируется подготовить реализацию данной спецификации для Docker, что позволит обеспечить переносимость обоих проектов.
source1
source2
Комментариев нет:
Отправить комментарий