1. 闲不住的人首页
  2. Docker

Docker 容器资源限制

使用 docker 运行了一个容器,默认情况下这个容器可以使用 docker host 上的所有资源。

本文主要是总结一下在运行容器时如何限制内存及 CPU 资源的限制。

内存限制

在执行 docker run 时可以使用限制内存的参数如下:

-m or --memory:限制容器可以使用的内存大小,单位可以是 k,b,m,g;
--memory-swap:设置容器 swap 内存的大小,要想设置容器的 swap 内存大小,就必须设置 -m 或者 --memory;
--oom-kill-disable:如果不希望容器因为内存耗尽而被 kill 可以启用此项;要与 -m 一起使用;

举例演示:使用 docker-stress-ng 镜像运行一个容器,限制容器最大使用内存为 512m,然后进行压测,使用 docker stats 查看容器资源使用情况;

为了演示出效果,第一次我们不进行任何限制然后查看容器内存使用情况

root@harbor:~ # docker run --name stress-memory -it --rm lorel/docker-stress-ng:latest stress --vm 4
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 4 vm

运行的命令 stress –vm 4 表示启动 4 个进程进行压力测试,每个进程默认占用 256m 内存,可以用 –vm-bytes 参数调整每个进程所需要的内存大小。

在另外开一个终端,使用 docker stats 命令查看容器资源的使用大小

docker  memroy测试1
docker memroy测试1

通过观察我们可以发现容器占用的 1G 内存,4个压测进程,每个分配 256m 刚好是占用 1G;

结束容器运行,重新启动容器限制内容最多占用 512m,还是启用 4 个压测进程

root@harbor:~ # docker run --name stress-memory -it --rm -m 512m lorel/docker-stress-ng:latest stress --vm 4
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 4 vm

在另外开一个终端,使用 docker stats 命令查看容器资源的使用大小

docker memroy测试2
docker memroy测试2

然而这次容器使用率到 512m 以后就不会在继续增加了。

CPU 资源限制

默认情况下,每一个容器可以使用 docker host 上的所有 CPU 资源,而且没有限制;

在执行 docker run 时可以使用限制 CPU 的参数如下:

--cpus=<value> :按核心数量限制,限制容器可以使用几核CPU,例如--cpus="1.5";

--cpuset-cpus:控制容器的CPU可以运行在哪个核心上,假如是4核CPU,可以用 0-3 来表示;--cpuset-cpus=1,3 就表示只能运行在第二个核和第四个核上;

举例演示:使用 docker-stress-ng 镜像运行一个容器,限制容器可使用的 CPU 核心数是 2,然后进行压测,使用 docker stats 查看容器资源使用情况;

与内存压测一样,为了演示出效果,第一次我们不进行任何限制然后查看容器 CPU 使用情况:

root@k8s-node04-bjqw:~ # docker run --name stress-cpu -it --rm lorel/docker-stress-ng:latest stress --cpu 4
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 4 cpu

上面启动容器后运行的 stress –cpu 4 表示,启动 4 个工作进程进行 CPU 压测,每个进程占用 1 核心;

在另外开一个终端,使用 docker stats 命令查看容器 CPU 资源的使用大小

docker cpu 压测1
docker cpu 压测1

结束容器运行,现在重新启用容器限制容器最大能使用 2 CPU 核心,docker run 时使用 –cpus 2 限制,然后在查看 CPU 使用率

root@k8s-node04-bjqw:~ # docker run --name stress-cpu -it --rm --cpus 2 lorel/docker-stress-ng:latest stress --cpu 4
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 4 cpu

使用 docker stats 命令查看容器 CPU 资源的使用大小:

docker cpu压测2
docker cpu压测2

如果觉得文章不错,不妨给个『打赏』写作不易,各位的支持,能激发和鼓励我更大的写作热情。谢谢

原创文章,作者:恩志,如若转载,请注明出处:https://www.xbzdr.com/625.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

在线咨询:点击这里给我发消息

邮件:510749025@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code