Runj – OCI-совместимый инструментарий для управления контейнерами на базе FreeBSD jail

Самуэль Карп Samuel Karp, инженер из компании Amazon, занимающийся разработкой Linux-дистрибутива Bottlerocket и технологиями контейнерной изоляции для AWS, развивает на основе jail-окружений FreeBSD новый runtime runj для обеспечения изолированного запуска контейнеров, оформленных в соответствии со спецификацией OCI (Open Container Initiative). Проект позиционируется как экспериментальный, разрабатываемый в свободное от основной работы время и пока находящийся на стадии прототипа. Код написан на языке Go и распространяется под лицензией BSD.

После доведения разработки до должного уровня cовместимость с OCI потенциально позволит применять runj для замены штатного runtime в системах Docker и Kubernetes, используя для запуска контейнеров FreeBSD вместо Linux. Из OCI runtime в настоящее время реализованы команды для создания, удаления, запуска, принудительного завершения и оценки состояния контейнеров. Начинка контейнера создаётся на основе штатного или урезанного окружения FreeBSD.

Так как в спецификации OCI пока отсутствует поддержка FreeBSD, в рамках проекта разработан ряд дополнительных параметров, связанных с настройкой jail и FreeBSD, которые планируется передать для включения в основную спецификацию OCI. Для управления jail используются утилиты jail, jls, jexec, kill и ps из состава FreeBSD, без прямого обращения к системным вызовам. Из планов на будущее отмечается добавление поддержки управления ограничением ресурсов через RCTL-интерфейс ядра.

Помимо собственного runtime runj в репозитории проекта также развивается экспериментальная прослойка для использования вместе с инструментарием containerd (штатный runtime Docker), модифицированным для поддержки FreeBSD.
Для преобразования rootfs FreeBSD в OCI-совместимый образ контейнера предлагается специальная утилита. В дальнейшем созданный образ может быть импортирован в containerd.

Release. Ссылка here.