CGroup Namespace
基本信息
Cgroup 命名空间是 Linux 内核的一项功能,提供 在命名空间内运行的进程的 cgroup 层次结构的隔离。Cgroups,即 控制组,是一个内核特性,允许将进程组织成层次组,以管理和强制 系统资源的限制,如 CPU、内存和 I/O。
虽然 cgroup 命名空间不是我们之前讨论的其他命名空间类型(PID、挂载、网络等)中的一个独立类型,但它们与命名空间隔离的概念相关。Cgroup 命名空间虚拟化了 cgroup 层次结构的视图,因此在 cgroup 命名空间内运行的进程与在主机或其他命名空间中运行的进程相比,具有不同的层次结构视图。
工作原理:
当创建一个新的 cgroup 命名空间时,它以创建进程的 cgroup 为基础开始查看 cgroup 层次结构。这意味着在新的 cgroup 命名空间中运行的进程将仅看到整个 cgroup 层次结构的一个子集,限制在以创建进程的 cgroup 为根的 cgroup 子树内。
在 cgroup 命名空间内的进程将 将自己的 cgroup 视为层次结构的根。这意味着,从命名空间内进程的角度来看,它们自己的 cgroup 显示为根,并且它们无法看到或访问自己子树外的 cgroup。
Cgroup 命名空间并不直接提供资源的隔离;它们仅提供 cgroup 层次结构视图的隔离。资源控制和隔离仍然由 cgroup 子系统(例如,cpu、内存等)本身强制执行。
有关 CGroups 的更多信息,请查看:
CGroups实验:
创建不同的命名空间
CLI
通过挂载新的 /proc
文件系统实例,如果使用参数 --mount-proc
,您可以确保新的挂载命名空间具有 特定于该命名空间的进程信息的准确和隔离的视图。
Docker
检查您的进程所在的命名空间
查找所有 CGroup 命名空间
进入 CGroup 命名空间
您只能以root身份进入另一个进程命名空间。并且您不能在没有指向它的描述符(如/proc/self/ns/cgroup
)的情况下进入其他命名空间。
参考
Last updated