Docker 资源限制

内存限制

内存限制包括两个部分:物理内存和swap。docker 通过以下两个参数限制容器内存的使用量。

(1)-m 或 --memory:限制内存使用。

(2)--memory-swap:限制内存+swap的使用。

比如如下命令:

docker run -d -m 200M --memory-swap=300M httpd

上面命令的含义是容器最多使用200M的内存和100M的swap,如果你不设置上面两个参数,默认是使用宿主机的所有内存。

注意:如果在启动容器时只指定-m 而不指定 --memory-swap,那么 --memory-swap 默认为 -m的两边,比如:

docker run -it -m 200M httpd

容器最多使用200MB物理内存和200MB swap。

CPU 限制

默认情况下,所有容器可以平等地使用本地CPU资源并且没有限制。可以通过 -c 或 --cpu-shares设置容器使用CPU地权重。如果不指定,默认为1024。与内存限制不同,通过 -c 设置地cpu shares 并不是 CPU 资源地绝对数量,而是一个相对的权重值。容器最终能分配的CPU资源取决于它的 cpu shares 占所有容器 cpu share 总和的比例。

比如启动两个容器:

docker run --name 'container_A' -c 1024 ubuntu
docker run --name 'container_B' -c 512 ubuntu

container_A 的cpu share 是1024,是container_B的两倍。当两个容器都需要CPU资源时,contaner_A 可以得到的CPU时container_B的两倍。

注意:这种按权重分配CPU只会发生在CPU资源紧张的时候。如果container_A处于空闲状态,这时,为了充分利用CPU资源,container_B也可以分配到全部可用的CPU

发表回复 0

Your email address will not be published. Required fields are marked *