在一些情况下,单机可能需要开启很多容器,那么容器多了很有可能导致硬件资源的挤兑,所以需要做每个容器做一些限制,今天我们就来学习下限制容器资源的方法
CPU的限制方法,我们还是用上次学习的例子flask的那个镜像
docker run -itd --cpus=2 --name app-flask -p 5001:5000 flask
默热容器使用CPU是无限制的,使用了cpus参数限制了容器使用CPU数量,除了这个还可以制定cpu分配的优先级,默认是1024,数字与越大,优先级越高
docker run -itd --cpus=2 --cpu-shares=2000 --name app-flask -p 5000:5000 flask
接下来我们看看如何限制内存
docker run -itd -m 512m --name app-flask -p 5000:5000 flask
启动以后我们可以使用
docker stats
查看状态
看到LIMIT这里显示的是512MiB
内存除了直接限制还有一个reservation功能,这个设置是当主机内存不足时激活
docker run -itd -m 512m --memory-reservation=256m --name app-flask -p 5000:5000 flask
我们再来看看docker-compose限制的方法,文件内容如下
version: "3" services: flask: image: flask deploy: resources: limits: cpus: '0.5' memory: 512M reservations: cpus: '0.25' memory: 256M restart: always ports: - 5000:5000 container_name: app-flask networks: - app_net networks: app_net: driver: bridge
启动编排的容器
docker-compose up -d
发现有一个警告
WARNING: Some services (flask) use the 'deploy' key, which will be ignored. Compose does not support 'deploy' configuration - use `docker stack deploy` to deploy to a swarm.
由于做了资源限制, 并且没有使用swarm, 所以要加上--compatibility参数, 不然限制会失效
docker-compose --compatibility up -d