docker和docker-compose限制容器CPU内存使用的方法

在一些情况下,单机可能需要开启很多容器,那么容器多了很有可能导致硬件资源的挤兑,所以需要做每个容器做一些限制,今天我们就来学习下限制容器资源的方法
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

查看状态
docker-stats.png

看到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


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/795.html