内存资源设置

设置内存我们可以有四种方式:

  • memory=inf, memory-swap=inf (default)

    默认的方式设置最低值,容器可以使用大于此最低值的内存数

  • memory=L<inf, memory-swap=inf

    设置memory不能使用超过L的值。

  • memory=L<inf, memory-swap=2*L

  • memory=L<inf, memory-swap=S<inf, L<=S

    memory不能超过L,swap+memory总使用量不能超过S

例子:
$ sudo docker run -ti centos /bin/bash

默认不设置任何限制。(第一种情况)

  1. $ sudo docker run -ti -m 300M --memory-swap -1 centos /bin/bash

memory最多使用300M,swap没有限制

  1. $ docker run -ti -m 300M centos /bin/bash

我们只设置了memory限制时300M,swap没有指定,默认被设置为与memory一样的值。memory+swap一共是600M

  1. $ docker run -ti -m 300M --memory-swap 1G centos /bin/bash

这里我们同时设置了memory和swap ,对应第四种情况

如果发生内存溢出错误,内核讲kill掉容器中的进程。如果你想控制,可以配合使用- -oom-kill-disable参数。如果没有制定-m参数,可能导致当内存溢出时内核会杀死主机进程。
例子:
设置容器内存限制100M,并且阻止 OOM killer

  1. $ docker run -ti -m 100M --oom-kill-disable centos /bin/bash

如果不使用-m参数制定限制,官方说很危险!