Red Hat представил Atomic, концепцию модульной ОС на базе изолированных контейнеров
Компания Red Hat анонсировала свободный проект Atomic, в рамках которого развивается концепция похожей на CoreOS минималистской операционной системы, нацеленной на обеспечение запуска изолированных контейнеров, подготовленных и управляемых при помощи инструментария Docker. Экспериментальные сборки Atomic на основе Fedora 20 подготовлены для использования в VirtualBox, QEMU/KVM и OpenStack. На базе Atomic будет сформирована специальная редакция дистрибутива Red Hat Enterprise Linux Atomic Host, которую планируется включить в состав серии продуктов Red Hat Enterprise Linux 7. Также планируется формирование сборки на основе CentOS.
Предоставляемое Atomic базовое окружение (Atomic Host) содержит только минимальный набор компонентов (systemd, journald, docker, rpm-OSTree, geard и т.п.), необходимых для запуска и управления изолированными контейнерами. Все пакеты, обеспечивающие работу конечные приложений, поставляются непосредственно в составе контейнеров, а хост-система не содержит ничего лишнего. Таким образом пользователю предлагается новая концепция построения гибких модульных систем - с минимальным базовым окружением, необходимость обновления компонентов которого сведена к минимуму, и набором контейнеров с реализацией окружений для обеспечения работы отдельных сервисов и приложений. Контейнеры не привязаны к базовой системе и могут перемещаться от одного сервера на другой, а также централизованно обновляться и заменяться без перезапуска сервера. Обновление базовой системы и контейнеров производится в атомарном режиме, без манипуляций на уровне отдельных пакетов.
Поставка сервисов в форме контейнеров упрощает тестирование продукта, например, новая версия приложения или обновление состава контейнера могут быть предварительно протестированы на машине разработчика, а затем в неизменном виде перенесены на рабочий сервер, заменив прошлый рабочий образ контейнера. Docker-образ может быть установлен в форме изолированного контейнера на любой внешней системе на базе systemd. В случае сбоя сервера, контейнер с минимальной задержкой может быть поднят на другой машине. Задачи по управлению зависимостями контейнеров и перезапуску после сбоя выполняет systemd.
Среди достоинств также отмечается увеличение безопасности и упрощение переноса приложений и сервисов, изначально выполняемых на выделенных серверах, в окружения виртуализации и облачные системы, позволяющие более оптимально использовать вычислительные ресурсы оборудования. При наличии проблем с безопасностью в контейнере, злоумышленник не сможет проникнуть дальше обслуживающего сервер изолированного окружения, содержащего только компоненты, требуемые для выполнения сервиса. Дополнительная изоляция контейнеров обеспечивается с использованием SELinux.
Для обновления системного окружения используется технология OSTree, при которой системный образ атомарно обновляется из Git-подобного хранилища, позволяющего применять методы версионного контроля к компонентам дистрибутива (например, можно быстро откатить систему к прошлому состоянию). RPM-пакеты транслируются в репозиторий OSTree при помощи специальной прослойки rpm-ostree. Отдельная установка и обновление пакетов внутри рабочего окружения не поддерживается, система обновляется не на уровне отдельных компонентов, а целиком, атомарно меняя своё состояние. Предоставляются средства для инкрементального применения обновлений, избавляющие от необходимости полной замены образа при каждом обновлении. Cостав базовой системы можно менять и устанавливать дополнительные пакеты, но делается это на уровне репозитория OSTree с последующей синхронизацией базовой системы.
Установка и привязка контейнеров к systemd, а также координация выполнения контейнеров на разных хостах, осуществляется при помощи нового инструмента GearD. GearD войдёт в состав будущего выпуска платформы OpenShift и берёт на себя задачи быстрой доставки и развёртывания кода приложений в программных окружениях на базе изолированных контейнеров с использованием методов непрерывной интеграции. При помощи GearD можно выполнять такие действия, как установка по сети образа Docker в систему с systemd, настройка конфигурации окружения, запуск/останов/перезапуск отдельных контейнеров, сборка и тестирование образов Docker, организация сетевого канала связи между контейнерами, передача логов, загрузка данных и контейнеров, мониторинга состояния контейнеров, настройка входа в контейнер по SSH, развёртывание приложений, в том числе из Git-репозитория.
Для управления системной конфигурацией помимо манипуляций в командной строке предлагается использовать web-интерфейс Cockpit, который позволяет администратору управлять хранилищами, запуском сервисов, анализировать логи, инспектировать и администрировать контейнеры Docker, в том числе отслеживать потребление ресурсов и задавать ограничения. Состав контейнеров может формироваться на основе пакетов, не привязанных к конкретному дистрибутиву.