什么是cgroupfs?如何与Docker一起使用?


16

在Docker文档中,讨论了本机execdriver(https://docs.docker.com/engine/reference/commandline/daemon/)的选项。该文件说

native.cgroupdriver选项指定对容器cgroup的管理。您可以指定cgroupfs或systemd。如果指定systemd,但它不可用,则系统使用cgroupfs。默认情况下,如果未指定任何选项,则execdriver首先尝试systemd,然后退回到cgroupfs。此示例将execdriver设置为cgroupfs:

我的问题是cgroupfssystemd在这种情况下,它是什么?谷歌搜索有关的信息cgroupfs导致了一条推文

--exec-opt native.cgroupdriver = cgroupfs FTW。认真@docker,放弃对systemd管理的cgroup的支持,这是一场灾难

但是,我希望有人可以提供更多有关此功能的详细信息,而不仅仅是说使用与默认设置不同的设置。


您确实意识到这一切与将系统(CPU)资源分配给容器有关,对吗?systemd具有内置的cgroup集成。Cgroupfs是内核cgroup接口的文件系统视图。如果这是您要寻找的东西,我会回答您。但是,如果您已经知道这一点,我将不得不深入研究代码。
Otheus

@Otheus我没有在这个问题上花很多钱,所以我不确定那个人对什么感兴趣。促使我提出这个问题的主要目的是希望了解为什么有人建议使用该选项--exec-opt native.cgroupdriver=cgroupfs。但是我怀疑您是否写了一个答案来解释该设置,它比Docker文档中的内容对于初学者来说更容易理解,您会得到一些支持,这也可能对将来人们从Google查找问题有帮助。
加布里埃尔南部

Answers:


1

正如我从以下来源的评论中看到的: vendor/src/github.com/opencontainers/runc/libcontainer/factory_linux.go

// Cgroupfs is an options func to configure a LinuxFactory to return
// containers that use the native cgroups filesystem implementation to
// create and manage cgroups.

cgroupfs似乎是自己的docker(libcontainer)实现,该实现将容器cgroups直接配置为写入文件cgroups-file-system(例如安装在中/sys/fs/cgroup/)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.