经过相当多的研究后,我想出了这个问题,以防其他人出现同样的问题。
在参照 https://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt ,这对理解cgroup非常有帮助,具有所有适当支持的内核应该默认安装docker的大多数cgroup。如果没有,有一个命令:
从第2.1节 - 基本用法
“ 要使用所有可用子系统安装cgroup层次结构,请键入:
“xxx”不是由cgroup代码解释,而是会出现在 / proc / mounts所以可能是你喜欢的任何有用的识别字符串。
注意:如果没有先输入一些用户输入,某些子系统将无法工作。例如, 如果启用了cpusets,则用户必须填充cpus和mems文件 对于在该组可以使用之前创建的每个新cgroup “。
但是,对于这种特殊情况,尝试安装单个cgroup(例如cpuset)会导致出现错误,指出“cpuset特殊设备不存在”。这是因为Raspbian Jessie 8的开发人员没有配置内核来支持Docker默认用于资源管理的cgroup。这可以通过键入来轻松确定 docker info 命令,并在输出的底部看到这个:
docker info
WARNING: No swap limit support WARNING: No cpu cfs quota support WARNING: No cpu cfs period support WARNING: No cpuset support
这些是Docker管理容器的内存和CPU资源所需的所有cgroup。测试你的内核是否支持像cpuset这样的东西很容易。如果是文件 /proc/filesystems 有一个条目说 nodev cpuset ,那意味着你的内核有cpuset支持,但是如果你正在阅读它,那么它可能意味着它只是没有在你的内核中配置。这将需要内核重新配置和重建,但这并不容易。
/proc/filesystems
nodev cpuset
使用正确的内核配置,它只是像Docker Docs一样自动运行。