• 内存资源设置

    内存资源设置

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

    • 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参数制定限制,官方说很危险!