互联网技术 / 互联网资讯 · 2023年12月18日

Docker容器内存限制设置

Docker允许对容器的内存使用进行严格限制,包括硬性和软性限制。硬性限制是指容器使用的内存不超过指定的数量,而软性限制则允许容器根据需要使用内存,除非系统内存不足或发生争用。当多个选项同时设置时,它们可能会产生不同的效果。

大多数选项需要输入正整数,并可附加后缀b、k、M或g,分别表示字节、千字节、兆字节和千兆字节。

参数选项

-M 或 –memory=

设置容器可使用的最大内存量。此选项的最小值为4M(4 MB)。

–memory-swap*

允许容器交换到磁盘的内存量。

–memory-swappiness

默认情况下,主机内核可以换出一定比例的容器使用的匿名页面。可以将此值设置为0到100之间,以调整该百分比。

–memory-reservation

指定在内存不足时,Docker激活的软限制,必须低于–memory以确保优先级。由于这是软限制,无法保证容器不会超过该限制。

–kernel-memory

设置容器可使用的最大内核内存量,最小值为4M。内核内存不足可能会影响主机和其他容器的资源。

–oom-kill-disable

默认情况下,如果发生内存不足(OOM)错误,内核会终止容器中的进程。使用此选项可以更改此行为,但仅在设置了-M/–memory的容器上有效。如果未设置-M,主机可能会因内存不足而终止其他进程。

–memory-swap 细节

此选项只有在同时设置–memory时才有意义。交换允许容器在RAM用尽时将额外的内存写入磁盘,但频繁交换会影响性能。

其设置可能会产生复杂的效果:

如果–memory-swap设置为正整数,则必须同时设置–memory和–memory-swap。–memory-swap表示可以使用的内存和交换总量,而–memory控制非交换内存的总量。例如,如果–memory=”300M”和–memory-swap=”1g”,则容器可以使用300M内存和700M(1g – 300M)交换。

如果–memory-swap设置为0,则该设置被忽略,并视为未设置。

如果–memory-swap与–memory设置为相同的值,并且–memory为正整数,则该容器不允许访问交换空间。

如果未设置–memory-swap,而–memory已设置,则在配置了交换内存的情况下,容器可以使用与设置相同的交换。例如,如果–memory=”300M”而未设置–memory-swap,则容器可以使用600M的总内存和交换。

如果–memory-swap显式设置为-1,则允许容器使用无限制的交换,最高不超过主机系统上的可用数量。

[[[IMG_1]]]

[[[IMG_2]]]

[[[IMG_3]]]