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 stressstress -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.mzph.cn/news/216642.shtml

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

相关文章

excel数据重复率怎么计算【保姆教程】

大家好,今天来聊聊excel数据重复率怎么计算,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧: excel数据重复率怎么计算 在Excel中计算数据重复率可以通过以下步骤实现: 1. 确定重复…

redis的深度理解

上篇博客我们说到了redis的基本概念和基本操作,本篇我们就更深入去了解一些redis的操作和概念,我们就从red的主从同步、redis哨兵模式和redis集群三个方面来了解redis数据库 一、主从同步 像MySQL一样,redis是支持主从同步的,而…

排序的简单理解(下)

4.交换排序 基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置 交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。 4.1 冒泡排序 冒泡排序&#xff08…

vue3若依框架,在页面中点击新增按钮跳转到新的页面,不是弹框,如何实现

在router文件中的动态路由数组中新增一个路由配置,这个配置的就是新的页面。 注意path不要和菜单配置中的路径一样,会不显示内容。 在菜单配置中要写权限标识就是permissions:[]里的内容 在children里的path要写占位符info/:data 点击新增按钮&#x…

HTML+CSS高频面试题

面试题目录 前言1.讲一下盒模型,普通盒模型和怪异盒模型有什么区别2.CSS如何实现居中3.讲一下flex弹性盒布局4.CSS常见的选择器有哪些?优先级5.长度单位px 、em、rem的区别6.position属性的值有哪些7.display属性的值有哪些,分别有什么作用8.…

std::map

一 emplace() emplace_hint() try_emplace()区别 1. emplace template< class... Args >std::pair<iterator, bool> emplace( Args&&... args ); 若容器中没有拥有该键的元素&#xff0c;则向容器插入以给定的 args 原位构造的新元素。 细心地使用 em…

20231211-DISM++安装win10-22h2-oct

20231211-DISM安装win10-22h2-oct 一、软件环境 zh-cn_windows_10_consumer_editions_version_22h2_updated_oct_2023_x64_dvd_eb811ccc.isowepe x64 v2.3标签&#xff1a;win10 22h2 wepe dism分栏&#xff1a;WINDOWS 二、硬件环境 8G或以上的有PE功能的启动U盘一个台式机…

Python常用文件操作库详解与示例

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 文件操作是编程中常见的任务之一&#xff0c;而Python提供了丰富的文件操作库&#xff0c;使得文件的读取、写入、复制、移动等操作变得非常便捷。本文将深入介绍一些Python中常用的文件操作库&#xff0c;以及它…

原型图都可以用什么软件制作?推荐这9款

对于设计师来说&#xff0c;一个有用的原型设计工具可以大大提高他们的工作效率&#xff0c;节省很多时间。当然&#xff0c;不同的原型设计工具有一定的差异&#xff01;那么哪个原型设计工具更好呢&#xff1f;以下是一些有用的原型设计软件&#xff0c;有需要的朋友可以根据…

红队攻防实战之DEATHNOTE

难道向上攀爬的那条路&#xff0c;不是比站在顶峰更让人热血澎湃吗 渗透过程 获取ip 使用Kali中的arp-scan工具扫描探测 端口扫描 可以看到开放了22和80端口。 访问80端口&#xff0c;重定向到 修改hosts文件&#xff0c;将该域名解析到ip 如图 修改完再次访问&#xff0…

如何在pytest接口自动化框架中扩展JSON数据解析功能?

开篇 上期内容简单说到了。params类类型参数的解析方法。相较于简单。本期内容就json格式的数据解析&#xff0c;来进行阐述。 在MeterSphere中&#xff0c;有两种方式可以进行json格式的数据维护。一种是使用他们自带的JsonSchema来填写key-value表单。另一种就是手写json。…

总线一:I2C简介(介绍看这一篇就够啦)

本节主要介绍以下内容&#xff1a; I2C协议简介 STM32的I2C特性及架构 I2C初始化结构体详解 一、I2C协议简介 I2C 通讯协议(Inter&#xff0d;Integrated Circuit)是由Phiilps公司开发的&#xff0c;由于它引脚少&#xff0c;硬件实现简单&#xff0c;可扩展性强&#xff…

Java判断字符串是不是数字

描述&#xff1a;通过Java判断一个字符串&#xff0c;是不是数字。这里包括正数、负数、浮点数、科学计数法 代码&#xff1a; import java.util.regex.Pattern;public class Test {public static void main(String[] args) {System.out.println(isNumeric("12.23")…

数据结构二维数组计算题,以行为主?以列为主?

1.假设以行序为主序存储二维数组Aarray[1..100,1..100]&#xff0c;设每个数据元素占2个存储单元&#xff0c;基地址为10&#xff0c;则LOC[5,5]&#xff08; &#xff09;。 A&#xff0e;808 B&#xff0e;818 C&#xff0e;1010 D&…

【LeetCode-树】-- 109.有序链表转换二叉搜索树

109.有序链表转换二叉搜索树 方法&#xff1a;找到链表的中点&#xff0c;将其作为根节点 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNo…

python中import mysql.connector出错无模块,且是已经pip install mysql-connector情况下

已经安装了mysql-connector和mysql-connector-python&#xff0c;使用python连接数据库&#xff0c;导入import mysql.connector仍报错&#xff1a; import mysql.connector# Connect to server cnx mysql.connector.connect(host"127.0.0.1",port3306,user"a…

视频剪辑进阶指南:批量置入视频封面,增加视频吸引力

在视频剪辑的进阶阶段&#xff0c;除了掌握基本的剪辑技巧和特效处理&#xff0c;还要尝试一些创新的方法来增加视频的吸引力。批量置入视频封面就是一种有效的方式。通过置入吸引的封面&#xff0c;能吸引观众点击视频并提高观看量。下面详细介绍云炫AI智剪如何批量置入视频封…

pandas按行值筛选

之前都没有意识到这个问题&#xff0c;就是pandas取某一行的值的问题 测试代码如下 import pandas as pd import numpy as np df pd.DataFrame({A: foo bar foo bar foo bar foo foo.split(),B: one one two three two two one three.split(),C: np.arange(8), D: np.arange…

GO闭包实现原理(汇编级讲解)

go语言闭包实现原理(汇编层解析) 1.起因 今天开始学习go语言,在学到go闭包时候,原本以为go闭包的实现方式就是类似于如下cpp lambda value通过值传递,mutable修饰可以让value可以修改,但是地址不可能一样value通过引用传递,但是在其他地方调用时,这个value局部变量早就释放,…

数据结构第六课 -----排序

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…