Memory docker内存交换=-1 OOM

Memory docker内存交换=-1 OOM,memory,memory-management,docker,Memory,Memory Management,Docker,我正在使用Ubuntu14.04和docker1.10.3 当我使用--memory swap-1执行docker run时,我发现主机使用的内存超出了该容器可以使用的最大内存,并且主机上没有其他占用大量内存的进程。下图是我在电脑上进行的测试: 第一部分是主机上的内存使用情况。 第二部分是在容器中运行的测试,以使用容器中的900M内存进行模拟。 第三部分使用docker stats查看容器的当前状态 我发现尽管docker stats显示容器使用的内存不超过104.9M,但在主机上使用的内存远

我正在使用Ubuntu14.04和docker1.10.3

当我使用
--memory swap-1
执行
docker run
时,我发现主机使用的内存超出了该容器可以使用的最大内存,并且主机上没有其他占用大量内存的进程。下图是我在电脑上进行的测试:

第一部分是主机上的内存使用情况。
第二部分是在容器中运行的测试,以使用容器中的900M内存进行模拟。
第三部分使用
docker stats
查看容器的当前状态

我发现尽管docker stats显示容器使用的内存不超过104.9M,但在主机上使用的内存远远超过104.9M。似乎
--memory swap-1
允许容器使用尽可能多的内存


这是真的吗?

是的,你完全正确

您可以在中找到更多信息(尽管确切地说,这个问题在这里并没有涵盖得那么清楚)

--memory swap=”“总内存限制(内存+交换,格式:[])。数字是一个正整数。单位可以是b、k、m或g中的一种。

--内存交换-1…禁用交换内存限制,这意味着容器中的进程可以使用所需的交换内存(如果主机支持交换内存)。

如果您想禁用可以使用的容器的交换使用

--memory swap=0

根据:如果--memory swap设置为0,则忽略该设置,并将该值视为未设置。因此,禁用容器交换的唯一方法是将--memory swap设置为与--memory相同的值(确保--memory设置为正整数)