在上一篇文章中我们初步学会使用了stress这个工具,稍微回顾一下我们的Dockerfile
FROM ubuntu//基础镜像ubuntu
RUN apt-get update && apt-get install -y stress//执行安装命令
ENTRYPOINT ["/usr/bin/stress"]//可执行命令stress
CMD []//类似占位,stress参数
很明显通过这个Dockerfile打成的镜像运行之后可以做到像运行stress命令一样的效果。现在我们进入正题,如何限制容器的资源占用,比如cpu,比如内存。
限制内存
这里先插一篇文章,关于 【Linux】Swap与Memory
docker run --memory 200M 484 --vm 1 --vm-bytes 500M --verbose
对上述命令做个简要说明,我们使用docker run命令来运行我们已经打成的容器(484为容器的开头ip),--memory参数表示限定该容器最大可分配内存为200M,--vm 1 --vm-bytes 500M --verbose为stress工具命令(含义在上一篇已经提到)。整个命令的含义就是运行一个容器,给这个容器分配200M内存,然后使用stress工具测试当分配500M内存运行时,该容器会发生什么情况?这样做到目的就是观察--memory这个参数是否起作用了,因为使用--memory已经限制了容器内存为200M,当stress需要分配500M内存的时候明显不能满足,这样容器就退出了,证明--memory起了作用。
限制CPU
此处我们主要使用的参数是--cpu-shares=int,注意这个参数代表的是 cpu使用的相对权重 ( 官方解释 CPU shares (relative weight))。具体含义见截图,我们打开三个窗口,分别执行
docker run --cpu-shares=5 --name=test1 484 --cpu 1//窗口1
docker run --cpu-shares=10 --name=test2 484 --cpu 1//窗口2
top//窗口3
这样我们可以通过截图很明显的观察到test1和test2占用cpu的权重大约等于1:2(即5:10)。



网友评论