如何设置Docker容器的CPU和内存使用限制

1. 概述

在很多情况下,我们需要限制docker主机上资源的使用。

在本教程中,我们将学习如何设置docker容器的内存和CPU限制

2. 通过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共享起主要作用

3. 使用docker-compose文件来设置容器资源

我们可以使用docker-compose文件来实现类似的结果。请注意,不同版本的docker-compose的格式设置上是不同的

3.1 docker swarm Versions 3 以上的版本

让我们给Nginx的服务限制是一半的CPU和512m的内存,保留四分之一的CPU和128m的内存。我们需要在我们的服务配置中创建“部署”和“资源”分段:

services:service:image: nginxdeploy:resources:limits:cpus: 0.50memory: 512Mreservations:cpus: 0.25memory: 128M

一般情况下容器的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: nginxmem_limit: 512mmem_reservation: 128Mcpus: 0.5ports:- "80:80"

要部署上面的docker-compose.yaml应用,我们需要执行:

docker-compose up

4. 验证容器资源使用

一但,我们设置了Docker容器的资源使用,我们可以用docker stats命令来检查设置

$ docker statsCONTAINER ID        NAME                                             CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
8ad2f2c17078        bael_stack_service.1.jz2ks49finy61kiq1r12da73k   0.00%               2.578MiB / 512MiB   0.50%               936B / 0B           0B / 0B             2

5. 结论

本文中,我们讨论了如何设置Docker容器资源的设置方法

如何设置Docker容器的CPU和内存使用限制相关推荐

  1. 设置Docker容器的CPU和内存使用限制

    运行场景:      1.docker run      2.docker-compose  1. docker run CPU 限制 默认情况下,访问主机的CPU是无限制的,我们可以使用CPUs参数 ...

  2. Docker Cgroup资源配置(CPU、内存、磁盘)

    一.Cgroup 资源配置方法 Docker 通过 Cgroup 来控制容器使用的资源配额,包括 CPU.内存.磁盘三大方面,基本覆盖了常见的资源配额和使用量控制. Cgroup 是 Control ...

  3. Docker容器对CPU资源隔离的几种方式

    了解Docker的同学应该知道,Docker的一个很大的特性就是可以对各种资源做隔离以及限制,这些资源包括CPU.内存.网络.硬盘,关于内存.网络.硬盘的资源限制都比较好理解,无非就是分多少用多少,比 ...

  4. docker查看java资源_JDK11设置Docker容器资源感知

    深入浅出docker+docker实战云图书 105.8元 (需用券) 去购买 > 一.背景 对于Java8的一些较早的版本(8u131以前?),如果部署在docker容器中,由于JVM不能感知 ...

  5. k8s下docker容器获取cpu核心数不准确导致高负载引发的宕机问题

    看了很多书都说docker来部署应用可以隔离系统资源互不影响,直到这段时间出现的一系列问题又颠覆了我的认知. 发现docker并不能隔离真正隔离系统资源.最近k8s中的某一个应用总是被强制重启,由于监 ...

  6. 为什么Java 服务Docker容器耗尽了系统内存

    Marek Goldmann | Resource management in Dockerhttps://goldmann.pl/blog/2014/09/11/resource-managemen ...

  7. Linux 设置Docker容器开机自启动,Dokcer容器常用命令总结。

    文章目录 Linux Dokcer容器常用命令总结 一.docker 常用基础命令总结 二.工作中常用docker命令 三.查看容器挂载目录 四.容器拷贝文件 五.设置搭建好容器开机自启 六.开启do ...

  8. Rancher Docker容器管理CPU/内存/网络/IO监控面板

  9. Docker 图片水印中文乱码显示为方框, 设置Docker容器字体

    水印中文不显示 原因 : 水印设置的字体在Linux系统中不存在 处理 : 在Docker里添加字体(在宿主机添加无效) 项目结构: 在DockerFile同级添加字体文件 编写Dockerfile文 ...

最新文章

  1. 高性能千万级定时任务管理服务forsun使用详解
  2. redis如何解决秒杀超卖java_Spring Boot + redis解决商品秒杀库存超卖,看这篇文章就够了...
  3. 工具的特性_16 个好用的 Code Review 工具
  4. opencv 高通滤波和低通滤波_滤波电路合集(低通滤波,CLCП滤波,DLC滤波,CRC П滤波)...
  5. 以普通用户启动的Vim如何保存需要root权限的文件
  6. 笔记本电脑自带麦克风吗_想让声音变得好听吗,不花一分钱,让你的电脑拥有外置麦克风...
  7. 几乎是苹果6倍!华为可穿戴设备出货量Q1同比猛增282%
  8. 公司技术部的罗强月薪10000,要跳槽
  9. qstring转string
  10. 中望3D 2021 线框设计“提取中心线”
  11. l455在线清零服务器,爱普生epson l455清零软件官方版
  12. QQ音乐2009去广告方法
  13. 通过精读一本英文技术书籍搞定英语
  14. python机器学习之回归预测:电池续航里程问题
  15. 昨天学了js的控制css样式,自己做了个算卦小程序
  16. 取消usb计算机连接网络,usb连接(如何设置usb网络连接)
  17. python爬取王者皮肤_Python爬取王者荣耀所有英雄以及高清大图
  18. 超有用的前端配色网站
  19. 京东金融-供应链金融业务介绍
  20. 从《雪白血红》说起(1)

热门文章

  1. 考研二战计算机应该换成学硕吗,2019考研:二战考研需要换学校吗?
  2. 免堆期由谁申请_Alan Logistics摘录:知识贴| 关于免箱期和免堆期
  3. 鄙视链是一种怪圈现象,那么IT行业也存在鄙视链吗?
  4. 你知道用手机也能写软件吗?手机编程开发
  5. HttpHandler详解
  6. PHP Web程序设计与Ajax技术pdf
  7. android html超链接颜色,如何在android中更改超链接的颜色
  8. 简单易学多维数据可视化R实现:神奇的卡通脸谱图Chernoff faces
  9. 动态域名解析与远程监控
  10. 检测导航仪GPS端口的工具