docker---资源控制

docker的资源控制

对容器使用宿主机的资源进行限制。

三种控制方向:CPU        内存        磁盘I/O

docker使用linux自带的功能cgroup;control groups是linux内核系统提供的一种可以限制记录,隔离进程所使用的物理资源机制。
docker借助此机制,来实现资源的控制。
cgroup本身是提供进程进行分组化管理的功能和接口的基础架构。分配控制的机制来实现资源控制。
host:容器与主机共用一个网络命名空间。
container:容器和容器之间共用一个网络空间,其他资源依然是隔离的。

限制容器对cpu的使用

限制方向

容器占用cou的时间。
容器占用cpou的权重比 (多个容器时,才有效)。
容器占用cou的内核数,绑定指定cpu内核给容器使用。

设置cpu使用周期

linux通过CFS(Completely Fair Scheduler完全公平调度器),来调度各个进程的CPU的使用。
调度周期:100ms 也可以手动设置这个周期,已经在这个周期时间之内各个容器能够使用cpu的调度时间。、
--cpu-period 设置容器调度cpu的周期
--cpu-quota 设置在每个周期内,容器可以使用cpu的时间。
可以配合使用,CFS周期的有效范围:1ms-1s  --cpu-period 1000~1000000
容器使用cpu的配额时间必须大于1ms,--cpu-quota的值,必须是>=1000=1ms

容器存储位置 cd /sys/fs/cgroup/cpu/容器的id

cpu.rt_period_us ------100000
CFS调度周期的长度,单位:微妙 ,在每个周期内,容器可以使用指定比例的cpu时间,默认情况都是100毫秒

cpu.cfs_quota_us -------(-1)
如果配置是-1,那么容器在使用宿主机cpu的时间不做任何限制。

CFS调度器,100毫秒就是定义了一个周期,在这个周期内,调度任务(容器)的基本时间单位。

大白话:

100ms一次调度请求cpu的资源,然后内核把cpu资源分配给容器。cpu.rt_period_us
调度请求后,根据配额,内核分配给容器使用的cpu时间。cpu.cfs_quota_us

docker run  -itd --name 容器名 --cpu-quota 周期时间 镜像名:标签 /binbash

例
docker run  -itd --name test2 --cpu-quota 40000 tentos:7 /binbash

设置容器cpu权重

--cpu-shares
设置容器占用cpu的权重比: 需要多个容器才能生效。
指定容器占用cpu的份额。 模式权重1024,设置的值只能是1024的倍数。
给每个容器使用cpu设置了相对的权重,权重高的,可以使用cpu的资源更多,但如果只运行一个容器,即便设置了权重,但是没有其他更高的权重的容器来占用资源,权重低的容器依然不受限。

docker run -itd --name 容器名 --cpu-shares 权重 镜像名:标签 /bin/bash

例
docker run -itd --name centos1 --cpu-shares 256 centos:7 /bin/bash

指定cpu

docker run -itd --name 镜像名 --cpuset-cpus 数 镜像名:标签 /bin/bash

例
docker run -itd --name test5 --cpuset-cpus 1,3 centos:7 /bin/bash

限制容器对内存的使用

docker run -itd --name 镜像名 -m 内存大小 镜像名:标签 /bin/bash

例
docker run -itd --name test6 -m 512m centos:7 /bin/bash

限制容器对swap的使用

想要限制容器使用swap。必须和限制内存一块使用

docker run -itd --name 容器名 -m 内存大小 --memory-swap=swap大小 镜像名:标签 /bin/bash

例
docker run -itd --name test7 -m 512m --memory-swap=1g centos:7 /bin/bash
如果限制了内存是512,swap是1G,那么容器实际上能够使用swap空间,1g-512m
swap使用的是1g-512G


如果不设置:-m 512m 但是使用swap的空间是-m的两倍

如果设置:-m 512m--memory-swap=1g,那么容器实际上能够使用swap空间:1g-512m
如果设置:-m 512m 和 --memory-swap的值一样,容器就不能使用swap
如果设置:-m 512m 和 --memory-swap=-1,容器就无限制使用swap

限制容器对磁盘I/O的使用

限制容器再磁盘上的读限制
docker run -itd --name 容器名 --device-read-bps 磁盘:读大小 镜像名:标签 /bin/bash

例
docker run -itd --name test8 --device-read-bps /dev/sda:1M centos:7 /bin/bash

限制容器再磁盘上的写限制
docker run -itd --name 容器名 --device-write-bps 磁盘:写大小 镜像名:标签 /bin/bash

例
docker run -itd --name test9 --device-write-bps /dev/sda:1MB centos:7 /bin/bash

测试写入速度:dd if=/dev/zero of=123.txt bs=1M count=10 oflag=direct
在使用dd 获取空字符集是从文件系统的缓存当中输入,速度是比较快的
oflag=direct
禁用文件系统缓存,直接把数据写入磁盘,可以更真实的测试

测试读取此时:
docker run -itd --name testl --device-read-iops /dev/sda:100 centos:7 /bin/bash
测试写入此时:
docker run -itd --name testl --device-write-iops /dev/sda:100 centos:7 /bin/bash

清理docker占用的磁盘空间

docker system prune -a
会清理掉(四点):

1、删除已经停止的容器

2、删除未被使用的网络

3、删除未被使用的镜像

4、删除创建时的缓存

压力测试

模拟系统负载的工具
yum -y install stress

stress -c 4

查看docker的cpu占用

可以容器的运行占用宿主机资源的情况
docker stats 容器名/id

查看容器内PID和宿主机pid的映射关系

查看容器内PID和宿主机pid的映射关系
docker top 容器名/id

总结

怎么对容器使用cpu进行限制:
容器占用cpu的时间
容器占用cpu的权重
容器绑定cpu

容器的宿主机的内存使用限制:
-m

swap:必须和限制内存一块使用
-m 512m --memory-wap=1g
-m 512m --memory-wap=512m
-m 512m 
-m 512m--memory-wap=-1

磁盘I/O(了解即可)


清理docker占用的磁盘空间:会删除已经停止的容器,删除所有未被使用的网桥设备、删除所有未被使用的镜像,删除创建容器时的缓存以及无用的数据卷

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

每日一练 | 华为认证真题练习Day145

1、一台路由器通过RIP、OSPF和静态路由都学习到了到达同一目的地址的路由。默认情况下,VRP将最终选择通过哪种协议学习到的路由? A. 三种协议学习到的路由都选择 B. 静态路由 C. OSPF D. RIP 2、如果网络管理员没有配置骨干区域,则路由器…

el-table 表格多选(后端接口搜索分页)实现已选中的记忆功能。实现表格数据和已选数据(前端分页)动态同步更新。

实现效果:(可拉代码下来看:vue-demo: vueDemo) 左侧表格为点击查询调用接口查询出来的数据,右侧表格为左侧表格所有选择的数据,由前端实现分页。 两个el-table勾选数据联动更新 实现逻辑: el-…

MQTT协议对比TCP网络性能测试模拟弱网测试

MQTT正常外网压测数据---时延diff/ms如下图: MQTT弱网外网压测数据 TCP正常外网压测数据 TCP弱网外网压测数据 结论: 在弱网场景下,MQTT和TCP的网络性能表现会有所不同。下面是它们在弱网环境中的对比: 连接建立:M…

华清远见嵌入式学习——QT——作业2

作业要求&#xff1a; 代码运行效果图&#xff1a; 登录失败 和 最小化 和 取消登录 登录成功 和 X号退出 代码&#xff1a; ①&#xff1a;头文件 #ifndef LOGIN_H #define LOGIN_H#include <QMainWindow> #include <QLineEdit> //行编辑器类 #include…

Rust测试字符串的移动,Move

代码创建了一个结构体&#xff0c;结构体有test1 字符串&#xff0c;还有指向字符串的指针。一共创建了两个。 然后我们使用swap 函数 交换两个结构体内存的内容。 最后如上图。相同的地址&#xff0c;变成了另外结构体的内容。注意看指针部分&#xff0c;还是指向原来的地址…

想转行IT,有前途吗?

作为一个在工程领域工作了三年的人&#xff0c;我深知转行到 IT&#xff0c;尤其是网络安全领域&#xff0c;不是一件轻松的事。我的经历或许能为你提供一些启示。 在我之前的工作中&#xff0c;虽然工作量大、压力重&#xff0c;但总觉得缺少了某种成就感和动力。我意识到&a…

Flutter代码补全

有的时候属性不经常使用&#xff0c;就想不起来该用啥&#xff0c;只有点点印象&#xff1b;只能用代码补全功能&#xff0c;但我用了AS的默认操作发下并不好使&#xff0c;估计是快捷键冲突了。刚开始是不是下面的效果&#xff1a;这肯定不是我们想要的。 不怕&#xff0c;接下…

XML是什么

XML是是什么&#xff1f; XML&#xff08;Extensible Markup Language&#xff09;&#xff0c;中文是可扩展标记语言&#xff0c;是标准通用标记语言的子集。它是一种标记语言&#xff0c;用于标记电子文档&#xff0c;使其结构化。 XML可以用来标记数据&#xff0c;定义数据…

代码随想录算法训练营第五十九天【单调栈part2】 | 503.下一个更大元素II、42. 接雨水

503.下一个更大元素II 题目链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 求解思路 重点在如何处理循环数组。 方案一&#xff1a; 直接将两个数组拼接在一起&#xff0c;然后使用单调栈求下一个最大值。 方案二&#xff1a; 在遍历的过…

提醒事项日历同步怎么设置?可实时同步日历的提醒事项工具

随着生活节奏的加快&#xff0c;我们每天都需要处理许多琐碎的事务。为了不忘记重要的事情&#xff0c;很多人选择使用提醒事项工具来帮助自己。然而&#xff0c;市场上的提醒事项工具五花八门&#xff0c;有些并不具备日历月视图功能&#xff0c;也无法与手机日历同步&#xf…

【Linux系统编程】项目自动化构建工具make/Makefile

介绍&#xff1a; make和Makefile是用于编译和构建C/C程序的工具和文件。Makefile是一个文本文件&#xff0c;其中包含了编译和构建程序所需的规则和指令。它告诉make工具如何根据源代码文件生成可执行文件&#xff0c;里面保存的是依赖关系和依赖方法。make是一个命令行工具&a…

paddleocr文字识别变迁

数据挖掘 v3 UIM&#xff1a;无标注数据挖掘方案 UIM&#xff08;Unlabeled Images Mining&#xff09;是一种非常简单的无标注数据挖掘方案。核心思想是利用高精度的文本识别大模型对无标注数据进行预测&#xff0c;获取伪标签&#xff0c;并且选择预测置信度高的样本作为训…

如何提升软文推广效果?这三招大部分人都不知道

内容为王的时代下不少企业都把软文推广作为宣传的主要手段&#xff0c;但不是每一次软文推广的效果都会如意。今天媒介盒子就来和大家分享提升软文推广效果的小诀窍&#xff0c;让企业宣传事半功倍。 一、以质取胜 虽然软文营销是一个长期积累的过程&#xff0c;但不代表数量决…

鸿蒙4.0开发笔记之ArkTS语法基础之数据传递与共享详细讲解(十八)

文章目录 一、路由数据传递&#xff08;router&#xff09;1、路由数据传递定义2、路由数据传递使用方法3、数据传递两个页面的效果 二、页面间数据共享&#xff08;EntryAbility&#xff09;1、定义2、实现案例3、避坑点 三、数据传递练习 一、路由数据传递&#xff08;router…

梳理一下嵌入式和单片机之间的关系

一定有很多人都听说过嵌入式和单片机&#xff0c;但在刚开始接触时&#xff0c;不知道大家有没有听说过嵌入式就是单片机这样的说法&#xff0c;其实嵌入式和单片机还是有区别的。单片机与嵌入式到底有什么关系&#xff1f; 下面我们就来说说嵌入式和单片机之间的联系和区别吧…

信息可视化在数字孪生中的应用:打造直观决策支持系统

在当今的数字化时代&#xff0c;数字孪生和信息可视化已成为推动各行业发展的重要力量。数字孪生为物理世界提供了一个虚拟的副本&#xff0c;而信息可视化则将复杂的数据以易于理解的方式呈现出来。两者之间的关系密切&#xff0c;相辅相成&#xff0c;为决策者提供了更全面、…

如何解决el-table中动态添加固定列时出现的行错位

问题描述 在使用el-table组件时&#xff0c;我们有时需要根据用户的操作动态地添加或删除一些固定列&#xff0c;例如操作列或选择列。但是&#xff0c;当我们使用v-if指令来控制固定列的显示或隐藏时&#xff0c;可能会出现表格的行错位的问题&#xff0c;即固定列和非固定列…

定时器TIM HAL库+cubeMX(上)

定时器时钟源APB1 36MHz 一.基本定时器 1.基本框图 2.溢出时间计算 3.配置定时器步骤 TIM_HandleTypeDef g_timx_handle;/* 定时器中断初始化函数 */ void btim_timx_int_init(uint16_t arr, uint16_t psc) {g_timx_handle.Instance TIM6;g_timx_handle.Init.Prescaler p…

3D Web轻量引擎HOOPS Communicator如何实现对大模型的渲染支持?

除了读取轻松外&#xff0c;HOOPS Communicator对超大模型的支持效果也非常好&#xff0c;它可以支持30GB的包含70万个零件和3.5亿个三角面的Catia装配模型&#xff01; 那么它是如何来实现对大模型的支持呢&#xff1f; 我们将从以下几个方面与大家分享&#xff1a;最低帧率…

校验maven安装是否安装成功失败

错误分析&#xff1a; 如图&#xff0c;核心文件存没有存放在maven文件夹里&#xff0c;而是存放在他下面的一个文件夹中 解决办法&#xff1a; 将文件剪切到“apache-maven-3.9.6-bin”文件夹中 验证&#xff1a; 问题解决&#xff01;