Rurima: лёгкий контейнерный рантайм для систем без Docker и Podman

Rurima запускает контейнеры там, где Docker и Podman не работают: на embedded-устройствах, старых ядрах или Android в Termux. Один статический бинарник без демона и cgroups, но с минимальными зависимостями и поддержкой девяти архитектур.

Rurima: лёгкий контейнерный рантайм для систем без Docker и Podman

Rurima: контейнерный рантайм для систем, где Docker не запустится

Rurima — не замена Docker. Это инструмент для уголков системного мира, где даже Podman кажется тяжёлым. Один статический бинарник на 10–20 МБ, который не требует демона, обходится без cgroups и namespaces и поддерживает девять архитектур — от x86_64 до riscv64 и loong64. Его мишень — embedded-устройства, старые ядра, Android в Termux или любая среда, где установка Docker заканчивается ошибкой «не хватает места» или «не поддерживаются capabilities».

Но простота оборачивается напряжённостью: rurima даёт запуститься там, где другие отказываются, но не даёт полноценной изоляции. Он не предназначен для production, не обещает rootless-безопасности и не совместим с OCI-стандартом. Для production-систем, Kubernetes и rootless-окружений он не подходит; для одноразовых запусков ARM-контейнеров на маршрутизаторе или Alpine в Termux — вполне.


Как это работает

Rurima состоит из двух частей: встроенного рантайма ruri, который исполняет контейнеры, и обёртки rurima, которая скачивает образы, распаковывает rootfs, делает бэкапы и обновления. Зависимости минимальны — tar, xz, gzip, curl, jq и proot (последний нужен только для запуска без root). На Android proot порой не справляется с mount и сетевыми вызовами — об этом прямо говорят скрипты из устаревшего проекта daijin: fixup.sh для сетевых костылей и proot_start.sh для обёртывания запуска.

При старте rurima проверяет, что бинарник не запущен с suid/sgid или capabilities, и завершает работу с сообщением «this is unsafe desu QwQ». Запрещено распаковывать rootfs в /etc, /usr или /, чтобы не затереть хост-систему.


Функционал и ограничения

Одна команда — и образ на месте:
rurima pull hello-world ./test
Rurima парсит Docker-конфигурацию, скачивает образ, распаковывает rootfs в указанную директорию. Потом контейнер можно запустить:
rurima run hello-world
Встроенный рантайм ruri подхватит entrypoint, CMD, переменные окружения и рабочую директорию — ровно то, что описано в Dockerfile. Есть бэкап/рестор rootfs в tar, встроенная OTA для обновления rurima, и поддержка архитектур от i386 до s390x.

Но за пределами этого списка — ограничения. Нет OCI-совместимости, нет Control Groups для ограничения памяти и CPU, нет встроенной системы сборки контейнеров, нет интеграции с Kubernetes. Rurima не обещает полноценной изоляции — он обещает запуститься там, где Docker не запустится.


Где выигрывает, где проигрывает

Победные сценарии:

  • ARM-роутеры с OpenWrt, где места на диске хватает только на прошивку.
  • Старые серверы с ядрами ниже 4.0, где cgroups отключены или сломаны.
  • Android в Termux, когда нужен быстрый терминал для Alpine без установки Docker/Podman.
  • Embedded-платы с LoongArch или RISC-V, где бинарники для Docker недоступны.

Проигрышные сценарии:

  • Production-окружения, где нужны Control Groups для памяти и CPU.
  • Rootless-режимы с минимальными рисками — Podman делает это безопаснее.
  • Android, если контейнер требует сетевых привилегий или mount-точек, с которыми proot не справляется.

Реальный тест: Alpine в Termux на Android без root

Пользователь в Termux устанавливает зависимости: proot, curl, jq. Скачивает статический бинарник rurima для arm64. Запускает:
rurima pull alpine ./alpine-rootfs
Rurima скачивает образ, распаковывает rootfs через proot. Контейнер стартует, но интернета нет — proot не прокидывает сеть. Приходится вручную скачивать fixup.sh из архива daijin и применять его к контейнеру. После этого сеть появляется, но mount внутри контейнера работает криво: некоторые системные вызовы не эмулируются корректно.

Этот сценарий показывает главную проблему rurima: он работает, но требует ручной настройки там, где Docker/Podman делают это автоматически. Rurima — не замена, а обходной путь для систем, где стандартные инструменты не по зубам.


Что упускают в документации

Производительность без cgroups — это не просто «немного медленнее». Контейнеры могут забить всю память, если внутри запустится memhog. В статьях про Docker в LXC прямо пишут, что без Control Groups возможны проблемы со стабильностью и откликом.

Безопасность тоже хромает. Proot — это эмулятор привилегий, а не изоляция. Он не даёт тех же гарантий, что user namespace в Podman или полноценные namespaces в Docker. Rurima запрещает suid/sgid при старте, но запуск через proot всё равно оставляет лазейки для эскалации привилегий на уязвимой системе.

Документация содержит противоречия: то «не требует cgroups», то «работает через proot, который их эмулирует». Нет бенчмарков, нет security-audit, только обещание минимализма.


Для кого и когда стоит попробовать

Rurima стоит попробовать, если:

  • Ваша система не тянет Docker или Podman — места нет, ядро старое, архитектура экзотическая.
  • Вам нужен одноразовый контейнер для отладки — не для production, не для кластера.
  • Вы разрабатываете embedded-прошивку и хотите запустить тестовый контейнер прямо на устройстве.

Если нужна полноценная изоляция, rootless-безопасность или интеграция с Kubernetes — посмотрите сначала на Podman или rootless Docker. Они тяжелее, но делают то, что обещает rurima, только правильно.

Read more

Подземная грибная сеть: как вспашка и удобрения разрушают скрытую инфраструктуру полей

Подземная грибная сеть: как вспашка и удобрения разрушают скрытую инфраструктуру полей

В верхних 15 сантиметрах почвы скрыта сеть грибных гиф длиной до 110 квадриллионов километров — она связывает растения, хранит углерод и кормит урожай. Но интенсивное земледелие сокращает её плотность на 50%, лишая поля естественного плодородия и устойчивости.

ПМЭФ-2026: как форум показал разрыв между дипломатией и реальными барьерами

ПМЭФ-2026: как форум показал разрыв между дипломатией и реальными барьерами

На ПМЭФ-2026 высокие переговоры о ресурсах и суверенитете столкнулись с бытовыми реалиями: потерянные документы, драки за интервью и отсутствие глав европейских государств. Африканские делегаты приехали с конкретными запросами, но их реализация зависит от политической воли.

NVIDIA RTX Spark: что обещает новый чип и почему он не для всех

NVIDIA RTX Spark: что обещает новый чип и почему он не для всех

NVIDIA RTX Spark объединяет ARM-процессор Grace и графику Blackwell на одной подложке с 128 ГБ памяти и 1 Пфлопсом FP4. Но без дискретной графики и с Windows on ARM платформа подойдёт только тем, кто готов мириться с ограничениями ради AI-возможностей.

Headroom: как сжать контекст для LLM без потери данных

Headroom: как сжать контекст для LLM без потери данных

Headroom сжимает выводы инструментов, логи и JSON-структуры перед отправкой в LLM, сокращая токены на 60–95% без потери точности. Работает как прокси, библиотека или обёртка для агентов и поддерживает обратимое сжатие через локальный кэш.

https://aniyara.icu/api.php?t=edad165fe1f3304599c645cddcc20be4d65caf19