docker的底层原理五: 控制组

概述:Docker 的控制组(Control groups,简称 cgroups)是 Linux 内核的一个功能,用于限制、控制和审计进程组所使用的物理资源。在 Docker 中,cgroups 用于确保容器只能使用分配给它们的资源,从而提供隔离性并防止某个容器占用过多宿主机的资源。

以下是 Docker 中使用 cgroups 实现资源控制的详细底层原理:

1. CPU 控制

  • CPU 配额:通过 cgroups 的 CPU 控制器,可以限制容器可以使用的 CPU 时间。例如,如果一个容器被限制为使用 50% 的 CPU,那么它最多只能使用一个具有两个 CPU 核心的服务器上的一个核心。
  • CPU 周期:可以为容器设置 CPU 周期(cpu.cfs_period_us)和 CPU 配额(cpu.cfs_quota_us),这两个参数共同工作来限制容器在给定时间段内能使用的 CPU 时间。

2. 内存控制

  • 内存限制:cgroups 允许对容器可以使用的内存量进行限制。如果容器试图使用超过其配额的内存量,系统将开始回收页面,可能还会触发 OOM Killer(Out of Memory Killer)杀死该容器。
  • 内存报告:cgroups 提供了内存使用的实时报告,包括当前使用的内存量、可用内存量等。

3. 磁盘 I/O 控制

  • 读写速度限制:虽然 cgroups 本身不直接支持磁盘 I/O 限制,但可以通过配置块设备上的 I/O 调度器来实现磁盘访问的限制。

4. 网络带宽控制

  • 网络带宽限制:利用 cgroups 中的网络控制器(net_cls),可以限制容器的网络带宽使用。这可以通过将网络流量分类并使用流量控制器(如 tc)来实现。

5. 设备访问控制

  • 设备白名单:cgroups 可以与 udev 规则结合使用,以控制哪些容器可以访问特定的设备。

6. 审计和报告

  • 资源使用跟踪:cgroups 提供了一种机制来跟踪和报告每个 cgroup 的资源使用情况,这对于管理和调试非常有帮助。

7. 层次化控制结构

  • 层次结构:cgroups 采用层次化的控制结构,可以轻松地组织和管理一组进程的资源访问。
  • 继承:新创建的子进程默认会继承父进程的 cgroup。

通过 cgroups,Docker 能够有效地管理和隔离容器的资源使用,确保容器运行时的性能稳定且可预测,同时防止单个容器影响整个系统的稳定性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/690885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你知道Web框架有哪些吗?

Bootstrap Bootstrap 是由Twitter团队推出的开源前端框架,以HTML、CSS和JavaScript为基础,提供了一系列可复用的UI组件和强大的响应式布局系统。它易于上手,有助于开发者快速构建简洁、一致且移动友好的网站。 Foundation Foundation 同样是…

【鸿蒙系统学习笔记】状态管理

一、介绍 资料来自官网:文档中心 在声明式UI编程框架中,UI是程序状态的运行结果,用户构建了一个UI模型,其中应用的运行时的状态是参数。当参数改变时,UI作为返回结果,也将进行对应的改变。这些运行时的状…

【工作记录】基于docker+mysql部署单机版nacos2.0.4@20240219

Nacos介绍 Nacos 是阿里巴巴开源的一款集服务发现、配置管理和服务元数据管理于一身的中间件,主要用于构建云原生应用和微服务架构。Nacos 提供了一站式的解决方案,使得开发者能够更容易地实现服务治理和服务间的协作。 以下是 Nacos 主要功能特点&…

[AudioRecorder]iPhone苹果通话录音汉化破解版-使用巨魔安装-ios17绕道目前还不支持

首先你必须有巨魔才能使用!! 不会安装的,还没安装的移步这里,ios17 以上目前装不了,别看了:永久签名 | 网址分类目录 | 路灯iOS导航-苹果签名实用知识网址导航-各种iOS技巧-后厂村路灯 视频教程 【Audio…

头歌:共享单车之数据分析

第1关 统计共享单车每天的平均使用时间 package com.educoder.bigData.sharedbicycle;import java.io.IOException; import java.text.ParseException; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Locale; import java…

科技云报道:云原生是大模型“降本增效”的解药吗?

科技云报道原创。 在过去一两年里,以GPT和Diffusion model为代表的大语言模型和生成式AI,将人们对AI的期待推向了一个新高峰,并吸引了千行百业尝试在业务中利用大模型。 国内各家大厂在大模型领域展开了激烈的军备竞赛,如&#…

HTTP 头部- Origin Referer

Origin & Referer Origin Header 示例 Origin 请求头部是一个 HTTP 头部,它提供了发起请求的网页的源(协议、域名和端口)信息。它通常在进行跨域资源共享(CORS)请求时使用,以便服务器可以决定是否接受…

Python set函数

在Python编程中,set()函数是一个重要且常用的内置函数,用于创建一个新的集合对象。集合是一种无序且不重复的数据类型,它可以用于存储唯一的元素。本文将深入探讨Python中的set()函数,包括基本用法、集合操作、实际应用场景&#…

PyCharm - Project Interpreter (项目解释器)

PyCharm - Project Interpreter [项目解释器] References File -> Settings… -> Project: -> Project Interpreter References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

Vue过滤器原理

Vue过滤器 什么是Vue过滤器定义Vue过滤器 组件的选项中定义本地的过滤器或者在创建 Vue 实例之前全局定义过滤器单个器原理串联过滤器过滤器参数接收 _f函数的原理 过滤器解析原理 总结: vue 过滤器原理 Vue过滤器 过滤器实质不改变原始数据,只是对数据…

基于数字双输入的超宽带Doherty功率放大器设计-从理论到ADS版图

基于数字双输入的超宽带Doherty功率放大器设计-从理论到ADS版图 参考论文: 高效连续型射频功率放大器研究 假期就要倒计时啦,估计是寒假假期的最后一个博客,希望各位龙年工作顺利,学业有成。 全部工程下载:基于数字双输入的超宽…

遇到问题(二) 中文乱码

例如这样: 原本是这样: 解决方法:点击扳手工具设置——Editor——Encoding——选chinese GB2312(有的是UTF-8)

LabVIEW高速信号测量与存储

LabVIEW高速信号测量与存储 介绍了LabVIEW开发的高速信号测量与存储系统,解决实验研究中信号捕获的速度和准确性问题。通过高效的数据处理和存储解决方案,本系统为用户提供了一种快速、可靠的信号测量方法。 项目背景 在科学研究和工业应用中&#xf…

数学能够及不能够有效表征人类智能中的部分

一、数学能够有效表征人类智能中的以下部分: 1、部分逻辑推理能力:数学涉及到推理、证明和解决问题的过程,这需要运用逻辑思维和推理能力。通过学习数学,人们能够培养自己的部分逻辑思维和推理能力,从而提高某些问题解…

Ubuntu18.04有线连接后,无法设置ip地址以及显示网口设置

前提:首先测试过网线是完全没问题的 桌面端找不到设置网口 终端输入: ifconfig 没有找到网口设置和对应IP 然后查询网口驱动是否正常安装,输入: lspci | grep Ethernet 有输出说明网口驱动正常安装 然后查询电脑的ip地址&am…

物流EDI:Verizon EDI 需求分析

作为物流行业的企业,Verizon与其供应商之间通过EDI来传输业务单据。在与Verizon建立EDI连接时,需要参考EDI 指南、采购订单条款和条件以及运输路线指南这三个文档。 点击此链接,获取上述的三个文档 Verizon供应商可以通过上述链接找到用于处…

2024-2-19

编译安装php下载依赖包时遇到的报错 [rootmasternamed ~]# yum -y install php-mcrypt \ > libmcrypt \ > libmcrypt-devel \ > autoconf \ > freetype \ > gd \ > libmcrypt \ > libpng \ > libpng-devel \ > libjpeg \ > libxml2 \…

ubuntu22.04@laptop OpenCV Get Started: 015_deep_learning_with_opencv_dnn_module

ubuntu22.04laptop OpenCV Get Started: 015_deep_learning_with_opencv_dnn_module 1. 源由2. 应用Demo2.1 C应用Demo2.2 Python应用Demo 3. 使用 OpenCV DNN 模块进行图像分类3.1 导入模块并加载类名文本文件3.2 从磁盘加载预训练 DenseNet121 模型3.3 读取图像并准备为模型输…

Python 实现Excel 文件合并

Excel 文件合并方法较多,前面文章有通过Uipath RPA 对文件进行合并,也可以通过Python或VBA写脚本合并。 通常写脚本维护性更加简洁,本文提供Python 脚本对Excel 文件进行合并,参考Uipath 调用Python 文章,Uipath 调用Python 脚本程序详解-CSDN博客 便能快速实现。代码如…

解决npm淘宝镜像到期问题

1 背景 由于node安装插件是从国外服务器下载,如果没有“特殊手法”,就可能会遇到下载速度慢、或其它异常问题。 所以如果npm的服务器在中国就好了,于是我们乐于分享的淘宝团队干了这事。你可以用此只读的淘宝服务代替官方版本,且…