用 C 从头开始构建 Linux 容器
barco 是我参与开发的一个项目,目的是为了更好地了解 Linux 容器和 Linux 内核,并借鉴了互联网上的其他指南。Linux 容器是由一组 Linux 内核功能组成的:
namespaces: 用于将内核对象分组成不同的集合,这些集合可以由特定进程树访问。namespaces有不同的类型,例如,PID命名空间用于隔离进程树,而网络命名空间用于隔离网络栈。seccomp: 用于限制进程可以调用的系统调用(通过 syscalls 处理)。capabilities: 用于设置 uid 0(根)可以执行的操作的限制(通过 syscalls 处理)。cgroups: 用于限制进程可以使用的资源(例如内存、磁盘 I/O、CPU 时间)(通过 cgroupfs 处理)。barco 可以用于从 / 目录中以 root (-u 0) 权限运行 bin/sh .,使用以下命令(可选 -v 以获取详细输出):
…barco 使用基于 LLVM-18 的许多工具进行开发、检查、格式化、调试和 Valgrind 以检查内存泄漏。
暂无开放 Issues,或尚未同步最近议题。