Контейнеризация
Вот уже несколько лет слово «контейнер» у всех на устах. Это заметная тема публичных обсуждений. Целые операционные системы перестраиваются, чтобы служить в первую очередь средами выполнения для контейнеров. И в публичных обсуждениях «контейнер» в основном отождествляется с «Docker». Трудно найти программное обеспечение, которое не предлагалось бы хотя бы также в виде образа Docker. Недостатки такой монополизации не заставили себя долго ждать, например, в виде серьёзных рисков безопасности.
Как мы убеждаемся снова и снова, один размер не подходит всем. Ряд преимуществ контейнеризации широко признан. Но потребности и требования в ИТ настолько разнообразны, что не все из них можно оптимально реализовать одной реализацией. Поэтому существуют альтернативные реализации контейнеров с разными профилями применения. И контейнеризация тоже не всегда полезна.
Fedora Server поддерживает и допускает несколько альтернатив, которые можно использовать в зависимости от локального контекста и/или профиля требований пользователя.
Варианты контейнеризации в Fedora Server
Общая черта всех контейнерных систем — совместное использование ядра хоста и использование возможностей ядра (например, cgroups) для достижения определённой взаимной изоляции и автономии.
Они различаются реализацией, архитектурными принципами, набором инструментов, средой выполнения и сообществом. Грубая классификация — это различие между «системным контейнером» и «прикладным контейнером», примерно определяемое наличием и объёмом системы инициализации.
Podman
Его характеристики:
-
Прикладной контейнер
-
Повышение безопасности: не требуются привилегии root и центральный управляющий демон
-
Оптимизирован для взаимодействия нескольких скоординированных контейнеров («pod»), каждый из которых посвящён конкретной задаче и сотрудничает с другими для выполнения сложной общей задачи (например, управление клиентами с подключением к конкретной системе баз данных). Усиливает архитектурный принцип: одно и только одно приложение на контейнер.
-
Двоично совместимый образ контейнера с Docker, взаимно используемый
-
Свободное программное обеспечение с открытым исходным кодом
Podman поддерживается в Fedora Server изначально и является рекомендуемым решением для прикладных контейнеров.
Docker
Его характеристики:
-
Прикладной контейнер
-
Зависит от демона, исторически с привилегиями ROOT. Позже был добавлен режим без root.
-
Огромная сокровищница готовых контейнеров для всевозможного программного обеспечения
-
Смесь бесплатной общественной редакции и коммерческого продукта
Docker выпускает собственную Community Edition для различных дистрибутивов. Поэтому нет встроенной поддержки для Fedora Server, но для Fedora поддерживается репозиторий поставщика.
LXC (libvirt)
Его характеристики:
-
Системный контейнер, своего рода «лёгкая виртуальная машина»
-
Администрирование сред выполнения контейнеров поддерживается процедурами управления Libvirt для виртуальных машин, а также модулем libvirt в Cockpit
-
Среда выполнения контейнеров зависит исключительно от возможностей ядра, собственный набор инструментов отсутствует
-
Создание образа диска контейнера не считается задачей libvirt, а является делом администратора. Оно включает составление дескрипторного файла на основе xml. Поэтому набор инструментов оценивается как несколько «грубый».
-
Свободное программное обеспечение с открытым исходным кодом
Libvirt LXC поддерживается в Fedora Server изначально (через libvirt как инструмент виртуализации по умолчанию)
LXC (Linux containers)
Его характеристики:
-
Системный контейнер
-
Одна из первых реализаций контейнеров и «прародитель» (тем временем эмансипировавшихся) Docker и Podman
-
Полный набор инструментов, образы контейнеров, сообщество. Его назначенный преемник — LXD (см. далее).
-
Свободное программное обеспечение с открытым исходным кодом
LXC от Linux Container поддерживается в Fedora Server изначально
LXD (Linux containers)
Его характеристики:
-
Системный контейнер, своего рода «лёгкая виртуальная машина»
-
LXC с расширенным набором инструментов
-
Полный универсальный набор инструментов, включая образы контейнеров и активное поддерживающее сообщество.
-
Свободное программное обеспечение с открытым исходным кодом
LXD не поддерживается в Fedora Server изначально, но доступен проект COPR, а также существует поддержка поставщика для Fedora от стороннего менеджера пакетов.
контейнер systemd-nspawn
Его характеристики:
-
Системный контейнер как «лёгкая виртуальная машина», а также настраиваемый как прикладной контейнер (с заглушкой системы инициализации)
-
Набор инструментов глубоко интегрирован в системное управление systemd и, таким образом, значительно упрощает администрирование и сопровождение.
-
Как технически строгая и систематическая документация, так и строгое именование и структурирование набора инструментов, что облегчает администрирование.
-
Свободное программное обеспечение с открытым исходным кодом
Контейнер systemd-nspawn поддерживается в Fedora Server изначально.
Want to help? Learn how to contribute to Fedora Docs ›