赞
踩
如何设置Docker容器的CPU和内存使用限制
容器布署后数,每个容器占用资源数不同,当资源不够用时,互相影响,docker提供上资源使用限制功能
docker stats
- CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
- c7bdcdc77786 7.04% 1.212 GiB / 7.638 GiB 15.87% 0 B / 0 B 8.08 MB / 372 MB 183
- da75d82bfa9c 7.21% 1.5 GiB / 7.638 GiB 19.64% 0 B / 0 B 9.86 MB / 372 MB 184
- 4769f05b983c 7.66% 1.225 GiB / 7.638 GiB 16.04% 0 B / 0 B 13.6 MB / 372 MB 187
. 通过docker run来限制Docker容器资源
我们可以使用docker run命令直接设置资源限制。这是一个简单的办法。但是,该限制于只适用于映像的一次特定执行任务
2.1 Memory 内存限制
例如,让我们将容器可以使用的内存限制为512mb
docker run -m 512m nginx
我们还可以设置一个软限制或者叫保留,当docker检测到主机内存不足时激活:
docker run -m 512m --memory-reservation=256m nginx
2.2 CPU 限制
默认情况下,访问主机的CPU是无限制的,我们可以使用CPUs参数设置cpu限制。例如,让我们约束容器最多使用两个cpu:
docker run --cpus=2 nginx
我们还可以指定CPU分配的优先级。默认值是1024,数字越高优先级越高:
docker run --cpus=2 --cpu-shares=2000 nginx
与内存保留,当计算能力不足且需要在竞争进程之间进行分配时,CPU共享起主要作用
使用docker-compose文件来设置容器资源
我们可以使用docker-compose文件来实现类似的结果。请注意,不同版本的docker-compose的格式设置上是不同的
3.1 docker swarm Versions 3 以上的版本
让我们给Nginx的服务限制是一半的CPU和512m的内存,保留四分之一的CPU和128m的内存。我们需要在我们的服务配置中创建“部署”和“资源”分段:
- services:
- service:
- image: nginx
- deploy:
- resources:
- limits:
- cpus: 0.50
- memory: 512M
- reservations:
- memory: 128M
注:reservations没有设置cpus的命令
一般情况下容器的cpus使用被限制在一半,内存为512MB ,如果服务器资源紧张的时候,cpus占用变为1/4,内存占用被限制为128MB
如果要使用上述docker-compose.yaml部署应用我们需要使用docker stack命令 , 部署应用到swarm中
docker stack deploy --compose-file docker-compose.yml bael_stack
3.2 docker-compose Version 2 配置方式
在旧版本的docker-compose中,我们可以将资源限制放在与服务的主要属性相同的级别上。它们的名字也略有不同:
- service:
- image: nginx
- mem_limit: 512m
- mem_reservation: 128M
- cpus: 0.5
- ports:
- - "80:80"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。