使用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的安全性
- 运行时权限