07_Docker 资源限制
Docker 容器做资源限制,是为了不让某个容器抢光 CPU、内存等主机资源,保证所有容器都能稳定运行,还能避免宿主机资源被耗尽,让资源利用更高效,也方便管理和满足服务的性能要求。
监控容器资源使用情况
docker stats
1.限制CPU使用率
--cpus #限制CPU使用率,例如:--cpus 0.3 (限制1核CPU 30%)
docker run -id --name 容器名 --cpus=限制的核数 镜像
#限制某个容器最大可使用CPU 0.3个核心
docker run -id --name centos7 --cpus=0.3 centos:7
2.限制内存
(1)限制内存
-m #限制内存
#内存限制为最多可使用100MB
docker run -id --name centos_mt1 -m=100M centos:7
(2)限制swap交换空间
--memory-swap=大小
#限制内存并限制交换空间
docker run -id --name centos_mt1 -m=100M --memory-swap=500M centos:7
3.限制磁盘
--storage-opt size=指定大小
#限制容器磁盘大小为10G
docker run -id --name centos-dt1 --storage-opt size=10G centos:7
综合资源限制
某小公司公司的服务器配置有限,当多个应用同时运行且访问量增加时,应用之间会争夺 CPU 和内存资源。例如,客户管理系统在处理大量客户数据查询时,会占用大量 CPU 资源,导致项目展示网站加载缓慢,影响用户体验。同时,由于没有对内存进行限制,某些应用可能会因内存泄漏而耗尽服务器内存,使整个服务器性能大幅下降甚至崩溃。
案例要求:CPU 1核、内存500、交换空间500
1.运行容器
docker run -id --name web01 \
--cpu=1 --cpus=1 -m=500M --memory-swap=500M \
-p 8081:80 -v /nginx/logs:/var/log/nginx/ nginx:1.27.2
2.监控使用资源
docker stats web01
3.测试验证:
#进入容器使用stress工具
docker exec -it web01 bash
#下载stress工具
apt update
apt install stress
#开始压力测试
stress --cpu 4 --timeout 60s
选项注释:
--cpu #指定要产生 CPU 压力的工作进程数量,--cpu 4 表示会启动 4 个 CPU 压力工作进程
--timeout #设置持续时间,到达设置的时间后自动结束压力测试