我在运行 docker 时收到警告:



我正在尝试弄清楚这意味着什么,特别是“内存受限而无需交换”这句话。

这是否意味着容器可以使用比您通常允许使用主机的交换空间更多的内存?或者这是否意味着即使主机完全耗尽内存,容器也无法使用交换空间?是因为没有配置交换空间吗?如果您不使用交换,这是否无关紧要?

注意:我对如何修复它不感兴趣 - 谷歌上有很多关于它的结果。我对它的含义很感兴趣,以及它为什么重要。

最佳答案

Docker 守护进程依赖以下虚拟文件来实现内存和交换限制:

/sys/fs/cgroup/memory/memory.limit_in_bytes
/sys/fs/cgroup/memory/memory.memsw.limit_in_bytes
如果您的内核不支持交换内存限制,则第二个文件将不存在,并且 docker run 不会对交换空间的使用施加任何限制。这样,容器甚至可以使用比 -m, --memory 设置更多的交换,就好像 --memory-swap 已设置为 -1 一样。显然,容器不能使用比您在系统上配置的更多的交换空间。
但是,警告消息也试图说明选项 -m, --memory 仍将生效,并且将按预期设置最大用户内存量(包括文件缓存)。

提到的 cgroup 挂载点可能不同,请参阅 /proc/self/mounts

关于docker - docker 说 "Memory limited without swap"是什么意思,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48685667/

10-16 17:53