我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Docker如何实现Memory资源限制

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Docker如何实现Memory资源限制

这篇文章主要为大家展示了“Docker如何实现Memory资源限制”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Docker如何实现Memory资源限制”这篇文章吧。

一:简介

docker通过cgroup来控制容器使用的资源配额,包括CPU、内存、磁盘三大方面,基本覆盖了常见的资源配额和使用量控制。

cgroup是Control Groups的缩写,是Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如 cpu、memory、磁盘IO等等) 的机制,被LXC、docker等很多项目用于实现进程资源控制。cgroup将任意进程进行分组化管理的 Linux 内核功能。cgroup本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O 或内存的分配控制等具体的资源管理功能是通过这个功能来实现的。这些具体的资源管理功能称为cgroup子系统,有以下几大子系统实现:

  1. blkio:设置限制每个块设备的输入输出控制。例如:磁盘,光盘以及usb等等。

  2. cpu:使用调度程序为cgroup任务提供cpu的访问。

  3. cpuacct:产生cgroup任务的cpu资源报告。

  4. cpuset:如果是多核心的cpu,这个子系统会为cgroup任务分配单独的cpu和内存。

  5. devices:允许或拒绝cgroup任务对设备的访问。

  6. freezer:暂停和恢复cgroup任务。

  7. memory:设置每个cgroup的内存限制以及产生内存资源报告。

  8. net_cls:标记每个网络包以供cgroup方便使用。

  9. ns:命名空间子系统。

  10. perf_event:增加了对每group的监测跟踪的能力,即可以监测属于某个特定的group的所有线程以及运行在特定CPU上的线程。

目前docker只是用了其中一部分子系统,实现对资源配额和使用的控制。

二:内存资源控制

和CPU控制一样,docker也提供了若干参数来控制容器的内存使用配额,可以控制容器的swap大小、可用内存大小等各种内存方面的控制。主要有以下参数:

--memory: 设置容器使用的最大内存上限。默认单位为byte,可以使用K、G、M等带单位的字符串。

-- memory-reservation:启用弹性的内存共享,当宿主机资源充足时,允许容器尽量多地使用内存,当检测到内存竞争或者低内存时,强制将容器的内存降低到memory-reservation所指定的内存大小。按照官方说法,不设置此选项时,有可能出现某些容器长时间占用大量内存,导致性能上的损失。

--memory-swap: 等于内存和swap分区大小的总和,设置为-1时,表示swap分区的大小是无限的。默认单位为byte,可以使用K、G、M等带单位的字符串。如果–memory-swap的设置值小于–memory的值,则使用默认值,为–memory-swap值的两倍。

4. --memory-swappiness:控制进程将物理内存交换到swap分区的倾向,默认系数为60。系数越小,就越倾向于使用物理内存。值范围为0-100。当值为100时,表示尽量使用swap分区;当值为0时,表示禁用容器 swap 功能(这点不同于宿主机,宿主机 swappiness 设置为 0 也不保证 swap 不会被使用)。

默认情况下,容器可以使用主机上的所有空闲内存。

三:举例

docker run -ti--rm --name mytest --memory 128m centos:latest /bin/bash

Docker stats<容器ID>

Docker如何实现Memory资源限制

四:IO资源控制

相对于CPU和内存的配额控制,docker对磁盘IO的控制相对不成熟,大多数都必须在有宿主机设备的情况下使用。主要包括以下参数:

  • –device-read-bps:限制此设备上的读速度(bytes per     second),单位可以是kb、mb或者gb。

  • –device-read-iops:通过每秒读IO次数来限制指定设备的读速度。

  • –device-write-bps :限制此设备上的写速度(bytes per     second),单位可以是kb、mb或者gb。

  • –device-write-iops:通过每秒写IO次数来限制指定设备的写速度。

  • –blkio-weight:容器默认磁盘IO的加权值,有效值范围为10-100。

  • –blkio-weight-device: 针对特定设备的IO加权控制。其格式为DEVICE_NAME:WEIGHT

以上是“Docker如何实现Memory资源限制”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Docker如何实现Memory资源限制

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Docker如何实现Memory资源限制

这篇文章主要为大家展示了“Docker如何实现Memory资源限制”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Docker如何实现Memory资源限制”这篇文章吧。一:简介docker通过cg
2023-06-04

Docker如何实现CPU资源限制

这篇文章主要介绍了Docker如何实现CPU资源限制,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一: 描述 Windows系统使用 --cpu-period int
2023-06-04

如何利用Redis和Haskell实现资源限制功能

如何利用Redis和Haskell实现资源限制功能在现代的网络应用中,对于资源的管理和限制是非常重要的。资源限制可以确保服务器的稳定性,防止滥用和恶意行为。本文将介绍如何利用Redis和Haskell实现资源限制功能,并提供具体的代码示例。
2023-10-22

Linux空间如何限制资源使用

在Linux系统中,可以通过多种方法来限制资源的使用,以确保系统的稳定性和安全性。以下是一些主要的资源限制方法:使用ulimit命令ulimit命令是Linux中用于设置和查看资源限制的命令。它允许你设置或显示各种资源限制,如最大文件大
Linux空间如何限制资源使用
2024-09-30

Docker容器如何实现MySQL多源复制

今天小编给大家分享一下Docker容器如何实现MySQL多源复制的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。⛳️ 1.多源
2023-07-02

如何实现跨域图片资源权限CORS enabled image

这篇文章主要介绍了如何实现跨域图片资源权限CORS enabled image,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。HTML 规范文档为 images 引入了 cro
2023-06-08

如何配置CentOS系统以限制用户对系统资源的访问权限

要配置CentOS系统以限制用户对系统资源的访问权限,可以按照以下步骤进行操作:1. 创建用户:使用`adduser`命令创建新用户。```sudo adduser username```2. 设置用户密码:使用`passwd`命令设置用户
2023-10-10

FileZilla如何实现速度限制

这篇文章给大家分享的是有关FileZilla如何实现速度限制的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。FileZilla速度限制速度限制功能就是当网络比较拥挤或FTP站点有特定要求的时候,对文件的上传和下载的
2023-06-16

Android 修改现有ROM资源文件如何实现

Android 修改现有ROM资源文件 一,准备工作1.一台开发手机。 我推荐最好用G7,也是就HTC Desire那款(是不是有些广告嫌疑。。。),这台机各种ROM都很全,资料也多些,很容易刷到root,Android版本也是最新的
2022-06-06

如何实现消耗CPU资源的shell脚本

这篇文章将为大家详细讲解有关如何实现消耗CPU资源的shell脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码如下:#! /bin/sh # filename killcpu.sh if [ $#
2023-06-09

Redis如何实现优惠券限一单限制

本篇内容介绍了“Redis如何实现优惠券限一单限制”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!需求:修改秒杀业务,要求同一个优惠券,一个用
2023-07-04

使用SpringBoot如何实现加载静态资源

这篇文章给大家介绍使用SpringBoot如何实现加载静态资源,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在SpringBoot中加载静态资源和在普通的web应用中不太一样。默认情况下,spring Boot从cla
2023-05-31

vue-router如何实现权限控制

这篇文章主要讲解了“vue-router如何实现权限控制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue-router如何实现权限控制”吧!在vue-router控制前端权限是常见需求:
2023-07-04

如何配置CentOS系统以限制进程资源使用的安全策略

要配置CentOS系统以限制进程资源使用的安全策略,可以使用以下步骤:1. 使用root用户登录到CentOS系统。2. 使用文本编辑器打开`/etc/security/limits.conf`文件:```sudo vi /etc/secu
2023-10-12

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录