使用cgroup_new_cgroup创buildcgroup时出现错误50007

我有一个进程在docker container中运行(docker将进程放在cgroup btw中)。 过程分叉,我想把一些forks进入cgroups

我将下面的代码添加到我的程序中:

 cgroup_init(); struct cgroup *my_cgroup = cgroup_new_cgroup(cg_name); cgroup_add_controller(my_cgroup, "cpu"); int cgroup_cr = cgroup_create_cgroup_from_parent(my_cgroup, 0); 

cgroup_r是50007(“Cgroup,operation not allowed”)。 我不知道这是为什么? 有什么configuration我需要改变? 是否需要一个能力

我相信访问修改cgroups将允许一个进程转义docker容器,所以默认情况下,docker将禁用。 你可以通过运行你的容器来testing问题是否只有一个能力:

 docker run --cap-add=ALL ... 

您很可能需要像SYS_ADMIN这样的权限,才能减less添加到特定项目的function。

如果添加function无法解决您的问题,则可以删除所有限制:

 docker run --privileged ... 

更多细节可以在以下urlfind:

  • Docker的安全性
  • 运行时权限