当我运行docker时,我收到警告:
警告:您的内核不支持交换限制功能或未安装cgroup.内存限制没有交换.
我想弄清楚这意味着什么,特别是"没有交换的内存限制"这句话.
这是否意味着通过使用主机的交换空间,容器可以使用比通常允许的容量更多的内存?或者它是否意味着即使主机完全耗尽内存,容器也无法使用交换空间?是否配置了交换空间?如果你不使用交换,这是无关紧要的吗?
注意:我对如何修复它不感兴趣 - 谷歌上有很多关于它的结果.我对它的含义感兴趣,以及它为何重要.
这是我发现的。
交换默认情况下不使用。您可以在Ubuntu / Debian容器上进行检查/sys/fs/cgroup/memory/memory.stat
。检查swap值,您将看到它设置为0(字节)。没有交换使用。
您通常可以使用--memory
和--memory-swap
标志来启用和限制交换使用,这就是该警告可以帮助您的地方。来自Docker的文档中有关非常类似的警告的信息:
如果不需要这些功能,则可以忽略该警告。您可以按照以下说明在Ubuntu或Debian上启用这些功能。
tl; dr:默认禁用交换。如果禁用cgroup或以其他方式破坏了容器交换限制(如该警告所示),则您将无法设置这些限制。