“ 先来回顾下上一篇docker入门,主要讲解了如何利用docker-compose来编排一组服务,有了这样的一组工具之后,我们可以将重心拉回到如何更好的实现应用本身以及如何更好的来定制容器。”
前言
容器运行的环境是隔离的,但是底层却使用着相同的cpu、内存。如果不对其做一些限制,那它们运行的过程中就会相互干扰。因此我们需要来学习下如何对cpu、内存做限制。
01
—
cpu
一般地,容器默认对cpu是不做限制的。但我们可以通过设置项对其增加限制,下面介绍几个常用选项:
02
内存
内存同样的也有几个常用选项:
03
demo
我们先从官网上拉取用于压测的镜像
docker pull lorel/docker-stress-ng
先查看下帮助文档
docker run lorel/docker-stress-ng:latest stress --help
可以看到命令非常多,文档的最后有一个例子
stress-ng --cpu 8 --io 4 --vm 2 --vm-bytes 128M --fork 4 --timeout 10s
以下是几个选项的说明:
--cpu:代表进程个数
--vm:启动几个进程进行压测
--timeout:压测的时长
--vm-bytes:每个进程使用多少内存
让我们来看下实际的例子。
测试内存限制使用,限制只能使用256M,并开起两个进程,如果是windows上测试的,可能会遇到“the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'”,只需要在如下命令前加上“winpty”即可
docker run --name stress -it --rm -m 256m lorel/docker-stress-ng:latest stress --vm 2
通过命令来验证下:
docker stats stress
可以发现无论启动了多少个进程,容器的内存使用量始终维持在256M上。
限制cpu的使用,限制只能使用一个核
docker run --name stress --rm --cpus 1 lorel/docker-stress-ng:latest stress --cpu 4
可以发现cpu的使用始终维持在100%,当然数值可能并不是那么准确的。
写在最后
本文简单的介绍了下如何对容器做资源限制。下一篇将学习下如何查看容器内的日志。
如有收获,点个在看,诚挚感谢