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

这篇具有很好参考价值的文章主要介绍了docker cgroup资源占用及docker的镜像创建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

cgroup用来资源限制

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

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

cgroup是controlgroup的缩写

设置cpu使用率的上限

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

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

cpu分多少时间。

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

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

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

docker cgroup资源占用及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 cgroup资源占用及docker的镜像创建

 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)基于现有镜像创建

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

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

镜像文件网站

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

 创建容器的方法

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 即可, 省去了敲命令的麻烦

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

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

docker inspect 产看详细信息

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

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

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

写时复制技术

docker cgroup资源占用及docker的镜像创建文章来源地址https://www.toymoban.com/news/detail-472357.html

到了这里,关于docker cgroup资源占用及docker的镜像创建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生】Docker网络及Cgroup资源控制

    Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的 Container-IP 直

    2024年02月16日
    浏览(43)
  • 500行代码手写docker-实现硬件资源限制cgroups

    本系列教程主要是为了弄清楚容器化的原理,纸上得来终觉浅,绝知此事要躬行,理论始终不及动手实践来的深刻,所以这个系列会用go语言实现一个类似docker的容器化功能,最终能够容器化的运行一个进程。 本章的源码已经上传到github,地址如下: 之前我们对容器的网络命

    2024年02月06日
    浏览(40)
  • Linux Cgroups进程资源限制管理 之 资源子系统限制/控制、Docker资源隔离与限制原理解读

    Linux cgroups(控制组)最初由Google工程师Paul Menage在2006年提出,并在Linux内核的2.6.24版本中首次引入。自那时以来,cgroups一直是Linux内核的一部分,并在容器化技术等领域中发挥着至关重要的作用。随着时间的推移,cgroups功能不断得到改进和扩展,以满足对资源管理和隔离性能

    2024年02月21日
    浏览(44)
  • linux 内核资源配置--cgroups详解以及在docker中的应用

    1.1、cgroups 是什么 Linux cgroup (Control Groups)是 Linux 内核提供的一种机制, 用于限制进程组使用的资源(如 CPU、内存、磁盘 I/O 等) 。通过将进程组划分为层次结构,并将资源限制应用于不同层次的组,可以实现对系统资源的统一管理和限制。 cgroup 提供了一套 API,用于创建

    2024年02月16日
    浏览(48)
  • 【windows Docker镜像占用许多空间:将数据迁移到D盘】

    首先退出docker 参考文章:https://blog.csdn.net/qingyang0320/article/details/130179881

    2024年02月05日
    浏览(57)
  • Hadoop YARN Cgroups 资源隔离讲解

    Hadoop YARN (Yet Another Resource Negotiator) 使用 Cgroups (Control Groups)来进行资源管理和隔离。 Cgroups 是 Linux 内核提供的一种机制,用于限制、账户和隔离进程组(process groups)的资源(例如 CPU、内存、磁盘 I/O 等)。 以下是 Hadoop YARN Cgroups 的主要讲解: 资源隔离和管理: Cgroups 允

    2024年02月01日
    浏览(38)
  • 初探 Linux Cgroups:资源控制的奇妙世界

    Cgroups 是 linux 内核提供的功能,由于牵涉的概念比较多,所以不太容易理解。本文试图通过简单的描述和 Demo 帮助大家理解 Cgroups 。 如果你对云原生技术充满好奇,想要深入了解更多相关的文章和资讯,欢迎关注微信公众号。 搜索公众号【 探索云原生 】即可订阅 Cgroups 是

    2024年02月03日
    浏览(37)
  • 深入剖析 Linux Cgroups 子系统:资源精细管理

    本章主要演示以下 cgroups 下各个 subsystem 的作用。 根据难易程度,依次演示了 pids 、cpu 和 memory 3 个 subsystem 的使用。 注:本文所有操作在 Ubuntu20.04 下进行。 如果你对云原生技术充满好奇,想要深入了解更多相关的文章和资讯,欢迎关注微信公众号。 搜索公众号【 探索云原

    2024年02月02日
    浏览(41)
  • Docker(三) 创建Docker镜像

    一、在Docker中拉取最基本的Ubuntu系统镜像         搜索Ubuntu镜像 Explore Docker\\\'s Container Image Repository | Docker Hub         下载镜像 二、在镜像中添加自己的内容         使用ubuntu镜像创建容器         在容器中创建了一个文件         通过docker commit 来从容器中创建一个新的

    2024年02月10日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包