#container #namespaces #linux #process

isolated

Linux 主机上的子进程容器

2 个不稳定版本

0.2.0 2021 年 6 月 30 日
0.1.0 2021 年 6 月 19 日

#972 in Unix API

MIT 许可证

15KB
236 代码行

isolated - Linux 上 Rust 的子进程容器

crates.io badge docs.rs badge

设置以下限制

  • 使用 pivot_rootoverlayfs 限制文件系统访问,使其仅能读取一个虚构的只读根文件系统(通常是 Alpine minirootfs)和一个共享于主机和容器的单一目录(writedir)。
  • 使用网络命名空间限制网络访问。目前,对其他网络的访问被简单地禁用。未来应该会很有趣,使用 VETH 接口实现适当的访问控制。
  • 使用命名空间禁用对主机 pids 和挂载的访问。

API 稳定性

目前还没有,尽管我不会在不增加 0.x 版本的情况下进行重大破坏性更改。

运行示例

请注意,运行此示例需要 root 权限,因为设置命名空间否则无法完成。此存储库包含一个 .cargo/config 文件,它使用 sudo -E 与所有 cargo 运行程序。

首先,下载 alpine minirootfs 并提取它(使用 ./download-rootfs.sh 工作)。

然后,运行 cargo run --example shell 会为你提供一个隔离的交互式 shell。查看 示例源代码

许可证

MIT

依赖项

~6–15MB
~214K SLoC