23个版本

0.7.0 2021年5月4日
0.6.0 2020年11月24日
0.5.1 2018年10月11日
0.4.0 2018年7月23日
0.1.4 2015年11月12日

#480 in Unix API

Download history 165/week @ 2024-03-13 121/week @ 2024-03-20 122/week @ 2024-03-27 284/week @ 2024-04-03 94/week @ 2024-04-10 88/week @ 2024-04-17 137/week @ 2024-04-24 112/week @ 2024-05-01 117/week @ 2024-05-08 122/week @ 2024-05-15 106/week @ 2024-05-22 110/week @ 2024-05-29 127/week @ 2024-06-05 116/week @ 2024-06-12 133/week @ 2024-06-19 88/week @ 2024-06-26

475 每月下载量
5 crates 中使用

MIT/Apache

96KB
2K SLoC

Rust Unshare

状态: 90% 功能完善,在生产环境中运行于 lithos 并为 vagga 提供动力

Github | 文档 | Crate

Unshare是一个用于创建Linux容器的低级库。

它包含以下内容:

  • 类似于 std::process::Command 的进程创建接口
  • 共享任意Linux命名空间
  • 更改root(chroot/pivot_root),uidgidgid_map
  • 一些信号屏蔽处理(特别是对于新进程)
  • 转发文件描述符和其他Unix相关内容(会话,终端)
  • 设置一些重要的prctl标志(PR_SET_PDEATHSIG
  • 以root用户和无特权用户身份运行

尚未实现

  • 细粒度的能力控制(目前可以更改用户或使用用户命名空间)

以下正在考虑

  • 捕获输入(应该是,因为它是 std::process 接口的一部分)
  • 为子进程创建伪终端
  • unsharesetns

以下超出范围

  • 挂载文件系统
  • 设置网络
  • 容器内和容器外监督
  • 处理子进程信号

许可证

许可协议为以下之一

任选其一。

贡献

除非您明确说明,否则根据Apache-2.0许可证定义的,您有意提交以包含在作品中的任何贡献,都将采用上述双重许可,不附加任何额外条款或条件。

依赖关系

~1.5MB
~37K SLoC