首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Docker的私有cgroup命名空间中填充cgroup.subtree_control?

如何在Docker的私有cgroup命名空间中填充cgroup.subtree_control?
EN

Unix & Linux用户
提问于 2021-12-18 18:55:02
回答 1查看 607关注 0票数 0

对于cgroupv2,默认情况下,Docker为cgroup使用私有命名空间。这由docker runD1标志和default-cgroupns-mode守护进程选项控制。我需要在容器中创建子cgroup,但是the问题是容器中的根cgroup有一个空的cgroup.subtree_control**!*我无法在容器中填充它,因为到容器运行时,这个根cgroup已经有进程了。尝试这样做会导致“设备或资源繁忙”错误。

--cgroupns host是一个解决方案,但它只是一个解决方案;它不使用私有名称空间,如果可能的话,我想保留这个名称空间。另一个问题是,当前有不行从一个复合文件中设置它。

我查看了--cgroup-parent,它可以通过撰写文件进行设置。不过,我不太明白这种情况。我在主机上创建了一个cgroup,并写信给subtree_control,然后尝试使用该cgroup作为父容器启动一个容器。我收到了这个错误,我不明白:

来自守护进程的错误响应: systemd cgroup的cgroup-parent应该是一个名为"xxx.slice“的有效切片。

我认为此设置将在以下引用cgroup_namespaces手册的上下文中更改“当前cgroup目录”:

当进程使用带有CLONE_NEWCGROUP标志的克隆(2)或unshare(2)创建新的cgroup命名空间时,其当前cgroup目录将成为新命名空间的cgroup根目录。

在任何情况下,在启动容器之前要求在主机上手动配置cgroup是很麻烦的。为了确保容器中的cgroup.subtree_control具有我需要的控制器,我需要哪些替代方案?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-12-21 01:42:49

在容器中创建一个子cgroup,将/sys/fs/cgroup/cgroup.procs中的每个PID移动到子容器中,然后/sys/fs/cgroup/cgroup.subtree_control可以被写入,而不会出现任何“设备或资源繁忙”错误。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/683012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档