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