运行场景:
1.docker run
2.docker-compose
1. docker run
CPU 限制
默认情况下,访问主机的CPU是无限制的,我们可以使用CPUs参数设置cpu限制。例如,让我们约束容器最多使用两个cpu:
docker run --cpus=2 nginx
我们还可以指定CPU分配的优先级。默认值是1024,数字越高优先级越高:
docker run --cpus=2 --cpu-shares=2000 nginx
与内存保留,当计算能力不足且需要在竞争进程之间进行分配时,CPU共享起主要作用。
Memory 内存限制
限制容器可占最大内存512兆
docker run -m 512m nginx
我们还可以设置一个软限制或者叫保留,当docker检测到主机内存不足时激活:
docker run -m 512m --memory-reservation=256m nginx
2.docker-compose
2.1 version: '3'以上版本
限制nginx可占CPU为一半和512MB的内存,资源紧张时保留四分之一的CPU和128MB的内存。编写在deploy选项下:
version: '3'
services:
service:
image: nginx
deploy:
resources:
limits:
cpus: 0.50
memory: 512M
reservations:
cpus: 0.25
memory: 128M
2.2 version: '2'版本
在旧版本的docker-compose中,我们可以将资源限制放在与服务的主要属性相同的级别上。它们的名字也略有不同:
service:
image: nginx
mem_limit: 512m
mem_reservation: 128M
cpus: 0.5
ports:
- "80:80"
使用docker stats对性能进行验证