RUNJ:实验,概念验证OCI兼容的FreeBSD监狱的运行时

2021-03-17 04:41:34

重要提示:Runj是一个概念验证,实现并未为其安全性没有评估。不要在生产系统上使用runj。 DONRUN在RUNJ内依赖安全配置的工作负载。这是某人的项目,没有由作者雇主雇主。

要使用runj运行监狱,您必须准备一个OCI捆绑包。捆绑包由AroOC文件系统和JSON格式的配置文件组成。

根文件系统可以包含常规的FreeBSD userland或aredued兼容兼容程序集。对于实验,可以将静态链接的程序从/恢复复制到您的捆绑中。 YouCan获得适用于http://ftp.freebsd.org/pub/freebsd/releases/pub/wersion/base.txz(其中$ arch和$版本替换为您的体系结构的runtj所需的版权值)。 Runjto协助实验中提供了几种演示便利命令;您可以使用Runj Demo下载从FreeBSD网站检索Aworking Root FileSystem。

RUNJ支持Lails的有限的配置参数。OCI运行时规范目前尚未包括对FreeBSD的支持。由于开发了这种概念,FreeBSD相关的配置参数可以串联到上游规范。现在,此处记录了扩展

您可以使用runj演示规范为捆绑制作示例配置文件。

有一个配置文件后,将根路径和进程args编辑到您的致命范围内。

创建具有RUNJ的容器创建$ ID $ Bundle,其中$ ID是为您的容器挑选的标识符,$ BUNDLE是具有有效CONFIG.JSON的BUNDER目录。

使用Runj启动$ ID启动您的容器。将启动CONFIG.JSON中定义的进程。

使用RUNJ杀死$ ID向您的容器进程(或容器中的所有进程)发送信号。

除了主要的runj OCI运行时,该存储库还包含可与Containerd一起使用的Anexpertical Shim。 Shim可作为ContainerD-Shim-Runj-V1可用,可以从CTR命令行工具使用Byspecify --Runtime Wtf.sbk.runj.v1。

目前需要一个特殊的ContainerD构建,原营也不是FreeBSD支持的所有必要条目已被合并上游。您可以在Containd的Fork上的FreeBSD分支中找到用于FreeBSD分支的Setof修补程序。

Runj包含一个实用程序,可以将FreeBSD根文件系统转换为可以导入到ContainerD中的ociImage。您可以下载,转换,安永映像如下:

$ runj demo下载--output rootfs.txzfound arch:amd64 found版本:12.1-exeastownloading映像为amd64 12.1-rootfs.txz [... output leliding ...] $ runj演示oci-ogreat --input rootfs.txzcreating在文件image.tarextracting OCI图像压缩... ...计算层消化...写的blob SHA256:f585dd296aa9697b5acaf9db7b40701a6377a3ccf4d29065cbfd3d2b80395733writing BLOB SHA256:4356d99aa6bcea46611c0108af469129e7013a4d121567c2fbd0e753e8e073cftar ... $ sudo的CTR图像导入--index名的FreeBSD image.tarunpacking的FreeBSD(SHA256: 960C76846CD112E09032C88914458FAEE8D03C04B8260DFBC4DA70B25227534A)...完成

Runj使用FreeBSD' S用户界的管理监禁;它没有直接与监狱相关的syscalls。您必须在系统上安装Jail(8),JLS(8),Jexec(8)和PS(1)的工作版本。 runj杀死了监狱里的杀戮(1)命令' s rootfs;如果此命令不称言(或者不是功能),Runj kill将无法正常工作。

FreeBSD上的资源限制可以使用内核' s rctl interface.runj目前不使用此功能,但可以通过RCTL(8)未来为其添加支持。 Runj本身在与FreeBSD项目相同的许可下获得许可。 有一定是在其他条款下获得许可的许可。 OCI运行时规范和码在Apache许可证下许可,2.0; 在本存储库中纳入并修改的该录制码的副本仍然在理想的许可证下。