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

Docker教程:限制容器对内存的访问的云计算核心技术

Docker可以强制执行硬性内存限制,即允许容器使用不超过给定数量的用户或系统内存;或软性限制,其可以允许容器使用所需数量的内存,除非满足某些条件,例如内核检测到主机上的内存不足或争用。当单独使用或设置多个选项时,其中一些选项会产生不同的效果。

大部分的选项取正整数,跟着一个后缀b,k, M,g,,表示字节,千字节,兆字节或千兆字节。

参数选项

-M 或者 –MeMoRy=

容器可以使用的最大内存量。如果设置此选项,则允许的最小值为4M(4 MB)。

–MeMoRy-swap*

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

–MeMoRy-swappineSS

默认情况下,主机内核可以换出一定比例的容器使用的匿名页面。您可以设置–MeMoRy-swappineSS一个介于0到100之间的值来调整此百分比。

–MeMoRy-ReseRvation

允许您指定一个小于–MeMoRyDockeR在主机上检测到争用或内存不足时激活的软限制。如果使用–MeMoRy-ReseRvation,则必须将其设置为低于,–MeMoRy以使其具有优先权。因为这是一个软限制,所以不能保证容器不超过该限制。

–keRnel-MeMoRy

容器可以使用的最大内核内存量。允许的最小值是4M。由于无法交换内核内存,因此内核内存不足的容器可能会阻塞主机资源,这可能会对主机和其他容器产生副作用。

–ooM-kill-disable

默认情况下,如果发生内存不足(OOM)错误,则内核将终止容器中的进程。要更改此行为,请使用该–ooM-kill-disable选项。仅在还设置了该-M/–MeMoRy选项的容器上禁用OOM杀手。如果-M未设置该标志,则主机可能会用完内存,内核可能需要终止主机系统的进程以释放内存。

–MeMoRy-swap细节

–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将其设置为正整数,则该容器无权访问swap。请参阅 防止容器使用swap。

如果–MeMoRy-swap未设置,并且–MeMoRy已–MeMoRy设置,则在主机容器配置了交换内存的情况下,容器可以使用与设置一样多的交换。例如,如果–MeMoRy=”300M”与–MeMoRy-swap没有设置,该容器可以在总的内存和交换使用600米。

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

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.

登录免费注册