docker cgroup资源占用及docker的镜像创建

news2024/12/28 6:51:15

cgroup用来资源限制

包括cpu,内存,磁盘三大方面

基本复写了常见的资源配额和使用量控制

cgroup是controlgroup的缩写

设置cpu使用率的上限

linux通过cfs(完全公平调度器)来调度各个进程对cpu的使用,cfs默认的调度周期是100ms

我们可以设置每个容器进程的调度周期,以及再这个周期内各个容器最多能使用cpu时间。

cpu分多少时间。

使用--cpu-period 即可设置一个cpu调度周期(使用上限),使用--cpu-quota 即可设置在每个周期内容器能使用的cpu时间。两者可配合使用。

 cd /sys/fs/cgroup/cpu/docker/容器目录

 

设置cpu资源占用比(设置多个容器时才有效果)

--cpu-shares 1024

docker run -itd --name c1 --cpu-shares 1024 centos:7

docker run -itd --name c2 --cpu-shares 2048 centos:7

docker exec -it c1 bash

stress 多进程压测

两个关掉一个容器另一个用所有资源

lscpu

docker ps -a

docker run -itd --name c3 --cpuset-cpus 1 centos:7

docker ps -a

docker exec -it c3 bash

yum install -y epel-release

yum -y install stress

Cgroup 资源限制

控制容器进程对cpu,内存,磁盘io 使用量的限制

docker run --cpu-period  --cpu-quota 容器进程使用cpu的使用率的上限

--cpu-period 1000~1000000

--cpu-quota >=1000

docker run --cpu-shares 1024的倍数#设置多个容器的cpu使用的占用比,只能在多个容器同时运行时且资源紧张时有效

docker run --cpuset-cpus cpu编号 #设置容器绑定指定cpu,如多个cpu用逗号,间隔

2)对内存使用的限制

//

 docker run -m 内存大小 --memory-swap=内存与swap的总大小

#=-1 不限制swap的使用,宿主机有多少可以用多少

#=0或不设置 swap为-m的两倍

=与-m的值相同 则不适用swap

-m 512mb --memory-swap=2G 内存512 swap 1.5G #限制容器的内存和swap大小

1M=1mb

测试:

docker exec -it c4 sh

dd if=/dev/zero of/opt/test.txt bs =1M count=10 oflag=direct

exit

docker run -itd --name c2 --device-write-bps /dev/sda:1M centos:7

磁盘io读写限制

docker run --device-read-bps 磁盘设备文件名:速率(单位可以是 kb mb M gb) #限制容器在磁盘上读的速率

docker run --device-write-bps 磁盘设备文件名:速率(单位可以是 kb mb M gb) #限制容器在磁盘上写的速率

docker run --device-read-iops 磁盘设备文件名:次数 #限制容器在磁盘上读的速率

docker run --device-write-iops 磁盘设备文件名:次数 #限制容器在磁盘上写的速率

docker的镜像创建(只读模板文件,包含容器里应用程序所需的所有内容)

创建镜像的三种方法:分别是为基于已有镜像的创建,基于本地模板创建以及基于dockerfile创建

1)基于现有镜像创建

首先启动一个镜像,在镜像做修改

然后修改后的同时提交为新的镜像需要使用

镜像文件网站

 创建容器的方法

1)基于现有镜像创建

先使用现有镜像创建容器 docker run

再进入容器进行内容跟新 docker exec

最后提交成新的镜像 docker commit docker export

+docker import导入

2)基于模板创建

可从本地容器导出模板文件 docker export或从网上下载现成的模板文件 http://openvz.org/Downlord/templete/precreated

再将模板文件导入成镜像 docker import

3) dockerfile 构建

docker镜像架构联合文件系统架构unionFS

支持对文件系统作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个修文件系统下AUFS,overlayFS及devicemapper都是一种unionFS

bootfs加载宿主机的内核

//镜像加载原理

Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统就是UnionES。

bootfs主要包含bootloader和kernel,bootloader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统。

在Docker镜像的最底层是bootfs,这一层与我们典型的Linx/unix系统是一样的,包含boot 加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。

rootfs,在bootfs之上。包含的就是典型Limx系统中的/dev,/proc,/bin,/etc等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如ubuntu,centos等等

我们回以理解成一开始内核里什么都没有,操作一个命今下我debian,这时就会在内孩上面加了一层某础镜像:再安装一个emacs,会在基础镜像上叠加一层image: 按着再安装一apache。又会在images面加一image。最后它们看起来就像一文件系统即究赛的rootfs。在Docker的体系里把这些rootsr的境像。但是,此的每一层rootfs都是read-only的,我们此时还不能对其进行作。当我们创建一个容器,也就是将Docker镜像进行实例化,系统会在一层或是多层read-only的rootfs之上分配一层空的read-write的rootfs.

//为什么Docker里的centos的大小才200M?

因为对于精简的OS,工O0ts可以很小,只需要包含最基本的命令、工具和程序库就可以了,因为底层直接用宿主机的Kaml,自己只需要提供rotfs就可以了。由此可见对于不同的linux发行版,bootfs基本是一致的,rootfs会有差别,因此不同的发行版可以公用bootfs。

//Dockerfile

Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如置名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、检建、操作的金今都写入一个脚本,用这个制太夹构建、定制接像,那么转像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。

dockerfile是一个文本文件,其内包含了一条条的指令 (Instruction),每一条指今构建一层,因此每一条指令的内容,就是捕述该层应当如何构建。有了nockerfi1le,当我们需要定制自己额外的需求时,只需在Dockerfile上添加或者修改指令,重新生成 image 即可, 省去了敲命令的麻烦

 

rootfs包含标准目录和文件(linux系统)

docker inspect 产看详细信息

可以理解成一开始内核里什么都没有,操作一个命令下载一个debian

 

dockerfile机构包含四个部分,基础镜像信息,维护者信息,镜像操作指令和容器启动时执行指令.容器数据的持久化用数据卷.(# ;不管前面的命令是否成功都会执行下一个)

写时复制技术

 

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

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

相关文章

Maven 介绍,根据 Maven 官方文档整理

这部分内容主要根据 Maven 官方文档整理,做了对应的删减,主要保留比较重要的部分,不涉及实战,主要是一些重要概念的介绍。 Maven 介绍 Maven 官方文档是这样介绍的 Maven 的: Apache Maven is a software project man…

OpenGL 着色器简介

1.简介 着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间唯一的沟通只有通…

Python数据攻略-DataFrame的数据计算和整理

大家好,我是Mr数据杨。今天,我们要踏上一场探索Python的旅程,途中我们将讲解算术运算、NumPy和SciPy函数的应用、DataFrame的排序、过滤、统计和遍历等技巧。想象一下如果《三国演义》中的诸葛亮有了Python的帮助,他将如何更有效地…

java debug调试工具

文章目录 java debug调试工具debugdebug运行断点如何运行 具体使用step intostep into Force step intoresume programstopview breakpointsmute breakpointsstep ourt Shift消除debug java debug调试工具 debug 就是调试工具,用来查看代码在运行工程数据的变化。 …

尚硅谷大数据hadoop教程_yarn

p125 课程介绍 p126 yarn基础架构 YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。 p127 工作机制 (1)MR程序提交到客户端所在的节点。 (2)YarnRunner向ResourceManager申请一个Applicatio…

一本书让你彻底搞懂安卓系统性能优化(文末送书5本)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

c盘清理软件:清理垃圾、扩大c盘和系统迁移

一、为什么要c盘清理软件 Windows系统采用了NTFS文件系统,这种文件系统特点是有文件碎片和系统产生的临时文件会大量存储到系统盘上,而且在使用电脑的过程中,由于程序的安装、升级、卸载和其他操作会产生大量无用的垃圾文件,这些…

文心一言 VS 讯飞星火 VS chatgpt (32)-- 算法导论5.2 4题

四、利用指示器随机变量来解如下的帽子核对问题(hat-heck problem):n位顾客,他们每个人给餐厅核对帽子的服务生一顶帽子。服务生以随机顺序将帽子归还给顾客。请问拿到自己帽子的客户的期望数是多少? 文心一言: 我们可以将这个问题转化为求解在指示器…

Java的Comparator升序降序的记法

在使用Java自带的排序函数时,往往需要根据自己的需求自定义比较器。以前一直对Comparator的升序降序疑惑。现在记录一下,加深下印象。 先给结论: 实现Comparator接口,必须实现下面这个函数: Override public int co…

Vue+springboot电动车共享电池租赁管理系统设计与实现

基于java语言、Springboot框架、B/S架构、Mysql数据库设计并实现了共享电动车电池管理系统设计与实现。系统主要包括首页、个人中心、用户管理、维护人员管理、商户管理、区域信息管理、电池信息管理、租赁订单管理、归还订单管理、费用订单和定、提醒信息管理、维护信息管理、…

基于vue3+mqtt实现的远程串口实时调试助手(网络透传)

软件:串口调试助手(基于MQTT消息协议实现多客户端同时订阅模式) 扩展:手机端H5(websocket)和vue3mqtt实现的接收客户端 用途:本地化串口调试,远程技术支持时可用,实时同步透传&…

Docker容器操作

#容器创建:就是将镜像加载到容器的过程。 新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。 格式:docker create [选项] 镜像 常用选项: -i:让容器开启标准输入接受用户输…

2023年下半年,智能家居渠道有什么新趋势?

2023年,全国各地陆续释放利好政策的信号,商务部将今年定位为“消费提振年”,照明与家居建材行业的市场环境及消费潜力将会得到大幅度改善。随着产业升级与消费需求升级,近年来,智慧照明与智能家居和智慧整装的融合趋势…

Mac - 鼠标拖尾特效 By CursorEffect2

目录 一.引言 二.安装 CursorEffect2 三.使用 CursorEffect2 四.使用效果 五.内存消耗 六.一键关闭 七.总结 一.引言 在自己搭建的 Hexo 博客上可以定义鼠标点击的特效,如图点击后可以产生彩色的斑点。 于是想着除了浏览 Hexo 博客外,能不能别的也…

超黑光摄像机可以有多“黑“?

目前,市场标准黑光级IPC能在0.0005Lux(照度单位)的低照下维持彩色,但星光级或普通红外条件则必须依赖补光灯。那么有没有一款摄像机能达到超黑光的标准,能够在更暗环境下,不需要额外补光的情况下维持彩色呢? 超低照成像…

STM32接收串口数据并且存储SD,Python读取SD验证

在我们使用 STM32 或者 FPGA 采集数据的时候,需要将数据存储到SD卡中,因为数据是按照地址存储的,并且没有文件结构,所以不能直接用电脑的文件管理器读取,下面是一种读取数据的办法 0. 实验平台 正点原子STM32F407ZG探…

mysql 是否包含 返回索引 截取字符串

是否包含返回索引 原文链接:https://www.cnblogs.com/shoshana-kong/p/16474175.html 方法1:使用通配符%。 通配符也就是模糊匹配,可以分为前导模糊查询、后导模糊查询和全导匹配查询,适用于查询某个字符串中是否包含另一个模糊…

TCP协议是如何实现可靠传输的

一、TCP最主要的特点 1.TCP 是面向连接的运输层协议,在无连接的、不可靠的 IP 网络服务基础之上提供可靠交付的服务。为此,在 IP 的数据报服务基础之上,增加了保证可靠性的一系列措施。 2.TCP最主要的特点 (1)TCP 是…

SpringBootWeb AOP(上)

事务&AOP 1. 事务管理 1.1 事务回顾 事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功,要么同时失败。 怎么样来控制这组操作&…

php通过cURL爬取数据(2):CURLINFO_HTTP_CODE返回0

CURLINFO_HTTP_CODE返回0 一、项目说明二、curl_getinfo返回异常1.小鹅通SDK2.CURLINFO_HTTP_CODE为0的原因有哪些?3.返回CURLINFO_HTTP_CODE0的解决方案4.请求超时和服务器配置,CPU的使用率有关系吗5.结论 三、阿里云短信发送延迟后而集中发送1.发送集中…