
«runc» следующего поколения с открытым исходным кодом, который позволяет rootless-контейнерам запускать рабочие нагрузки, такие как Systemd, Docker, Kubernetes, точно так же, как виртуальные машины.
Sysbox — это открытый и бесплатный контейнерный рантайм (специализированный "runc"), изначально разработанный компанией Nestybox ([приобретена Docker][docker-acquisition] в 05/2022), который улучшает контейнеры двумя ключевыми способами:
Улучшает изоляцию контейнеров:
Пользовательское пространство имён Linux для всех контейнеров (т.е. пользователь root внутри контейнера имеет нулевые привилегии на хосте).
Виртуализирует части procfs и sysfs внутри контейнера.
Скрывает информацию о хосте внутри контейнера.
Блокирует начальные монтирования контейнера и многое другое.
Позволяет контейнерам выполнять те же рабочие нагрузки, что и виртуальным машинам:
С Sysbox контейнеры могут запускать системное ПО, такое как systemd, Docker, Kubernetes, K3s, buildx (включая сборки для нескольких архитектур), устаревшие приложения, мультиархитектурные приложения и многое другое — бесшовно и безопасно.
Это ПО может работать внутри контейнеров Sysbox без модификаций и без использования специальных версий (например, rootless-вариантов).
Никаких привилегированных контейнеров, сложных образов, хитрых entrypoint'ов, особых монтирований томов и т.д.
Думайте об этом как о "форсаже для контейнеров": он позволяет вашим существующим менеджерам контейнеров / оркестраторам (например, Docker, Kubernetes и т.д.) разворачивать контейнеры с усиленной изоляцией, которые могут запускать почти любые рабочие нагрузки, выполняемые в виртуальных машинах.
Sysbox делает это, максимально приближая контейнер к VM-подобному окружению, используя передовые техники виртуализации ОС.
В отличие от альтернативных рантаймов, таких как Kata и KubeVirt, он не использует виртуальные машины. Это упрощает его использование (особенно в облачных средах, поскольку не требуется вложенная виртуализация), хотя он не обеспечивает такого уровня изоляции, как VM-базированные рантаймы. См. здесь для сравнения.
Нет необходимости изучать новые инструменты или изменять существующие образы контейнеров или рабочие процессы, чтобы использовать преимущества Sysbox. Просто установите его и укажите вашему менеджеру контейнеров / оркестратору использовать его для развёртывания улучшенных контейнеров.
Sysbox может сосуществовать с другими контейнерными рантаймами на одном хосте (например, с OCI runc по умолчанию, Kata и т.д.). Вы можете легко выбирать, какие контейнеры или поды запускать с каждым из них, в зависимости от ваших потребностей.
Sysbox — бесплатное и открытое ПО, лицензированное по лицензии Apache, версия 2.0. Подробнее см. в файле LICENSE.
Sysbox изначально разработан компанией Nestybox. Поскольку [Nestybox теперь является частью Docker][docker-acquisition], Docker выступает основным спонсором проекта Sysbox.
Тем не менее, Sysbox — это открытый проект сообщества, и он официально не поддерживается Docker (т.е. подписки Docker не включают поддержку Sysbox). Поддержка осуществляется наилучшим образом через этот репозиторий Github или через [Slack-сообщество Sysbox][slack].
Мы приветствуем участие сообщества в развитии и улучшении Sysbox с целью расширения вариантов использования и преимуществ, которые он даёт. Внешние мейнтейнеры и контрибьюторы приветствуются.
Sysbox решает такие задачи, как:
Усиление изоляции контейнеризованных микросервисов (root в контейнере отображается на непривилегированного пользователя на хосте).
Предоставление высокофункционального root-пользователя внутри контейнера без ущерба безопасности хоста.
Обеспечение безопасности CI/CD-конвейеров за счёт поддержки Docker-in-Docker (DinD) или Kubernetes-in-Docker (KinD) без небезопасных привилегированных контейнеров или монтирования Docker-сокета хоста.
Использование контейнеров как "VM-подобных" сред для разработки, локального тестирования, обучения и т.д. с сильной изоляцией и возможностью запускать systemd, Docker, IDE и многое другое внутри контейнера.
Запуск устаревших приложений внутри контейнеров (вместо менее эффективных ВМ).
Замена виртуальных машин более простой, быстрой, эффективной и переносимой контейнерной альтернативой, которую можно легко разворачивать в облачных средах.
Разделение голых серверов (bare-metal) на несколько изолированных вычислительных сред с плотностью в 2 раза выше, чем у ВМ (т.е. развёртывание вдвое большего количества VM-подобных контейнеров, чем ВМ, на том же оборудовании с той же производительностью).
Разделение облачных инстансов (например, EC2, GCP и т.д.) на несколько изолированных вычислительных сред без обращения к дорогостоящей вложенной виртуализации.
Sysbox легко устанавливается на хостах Linux (bare-metal, ВМ, on-prem, облако и т.д.). Он работает во всех основных облачных IaaS и Kubernetes-сервисах (например, EC2, GCP, GKE, EKS, AKS, Rancher и т.д.)
После установки Sysbox работает незаметно: вы используете Docker, Kubernetes и т.д. для развёртывания контейнеров с его помощью.
Например, эта простая команда Docker создаёт контейнер с Sysbox:
$ docker run --runtime=sysbox-runc -it any_image
Вы получаете хорошо изолированный контейнер, способный беспрепятственно запускать как микросервисы, так и системное ПО, которое обычно работает на виртуальных машинах (например, systemd, Docker, Kubernetes и т.д).
Подробнее об использовании Sysbox здесь.