首页 > 其他分享 >[Docker]容器服务是如何与cgroups协同进行资源控制的?

[Docker]容器服务是如何与cgroups协同进行资源控制的?

时间:2023-04-14 17:00:35浏览次数:35  
标签:容器 cgroups 配额 Docker CPU 资源

Docker 利用 Linux 的控制组(cgroups)来进行资源控制。cgroups 是一种内核特性,它允许对资源(例如 CPU、内存、磁盘 I/O 等)进行限制、分配和优先级分配。

Docker 利用 cgroups 进行资源限制时,他会通过 cgroups 为每个容器分配特定的资源配额。这意味着每个容器只能够使用 cgroups 中指定的 CPU 时间、内存空间、网络带宽等资源。如果容器超过了配额,那么 cgroups 将会暂时停止该容器运行,从而确保它不会消耗超过配额的资源。

以下是一些 Docker 利用 cgroups 进行资源控制的典型方式:

  • CPU 配额限制:使用 cgroups 中的 cpu.shares 参数来限制容器可以使用的 CPU 时间。
  • 内存配额限制:使用 cgroups 中的 memory.limit_in_bytes 参数来限制容器可以使用的内存量。
  • 磁盘 I/O 配额限制:使用 cgroups 中的 blkio.weight 和 blkio.throttle..bps 参数来限制容器可以使用的磁盘 I/O 速率。

Docker 中的资源控制器将对应的 cgroups 参数与容器关联。例如,在使用 docker run 命令创建容器时,可以使用 --memory 选项设置内存限制,并使用 --cpu-shares 选项设置 CPU 配额。然后,Docker 将在内部实际创建一个 Cgroup 映射到这些参数,并监控用户在容器中使用的资源和行为,并执行相应的操作。

总结:Docker 利用 cgroups 实现了对 CPU、内存、磁盘 I/O、网络带宽等资源的限制和控制,确保容器使用足够但不超过配额的资源,将资源协同管理、分配和优先级分配。

标签:容器,cgroups,配额,Docker,CPU,资源
From: https://www.cnblogs.com/Skybiubiu/p/17318848.html

相关文章

  • docker-day4——Dockerfile、docker私有仓库、dockercompose介绍、dockercompose部署f
    目录一、Dockerfile1.1常用和不常用命令1.2dockerfile构建一个djagno项目二、docker私有仓库2.1镜像传到官方仓库2.2镜像分层2.3私有仓库搭建三、dockercompose介绍四、dockercompose部署flask+redis项目4.1新建flask项目app.py4.2编写Dockerfile--》用于构建flask项目的......
  • docker -DockerFile
    1.dockerfile安装,编写我们的镜像来源:1.远程仓库拉取2.用仓库做成的镜像3.把备份的恢复4.使用dockerfile构建Dockerfile是由一系列命令和参数构成的脚本文件,这些命令应用于基础镜像并最终创建一个新的镜像。使用dockerfile不需要先创建容器在里面加东西,而是直接可以在镜像中......
  • docker----day04
    昨日回顾#1容器其他操作 1dockerstart容器id2dockerstop容器id3dockerrm容器id4dockerrm`dockerps-aq`#正在运行的容器不能删除5dockerexec容器id命令6dockercp宿主机目录容器id:容器目录#目录要存在7dockercp......
  • Docker服务器、以及容器设置自动启动
    #一、docker服务设置自动启动###查看已启动的服务systemctllist-units--type=service###查看是否设置开机启动systemctllist-unit-files|grepenable###设置开机启动systemctlenabledocker.service###关闭开机启动systemctldisabledocker.service#二......
  • 【从零开始】Docker Desktop:听说你小子要玩我
    前言......
  • 使用阿里云下载海外Docker镜像教程
    1、准备Github帐号自行注册:https://github.com/2、打开阿里云-容器镜像服务https://cr.console.aliyun.com/cn-hangzhou/instances3、绑定Github帐号4、GitHub仓库准备4.1.、创建一个项目 4.2、项目创建一个Dockerfile 4.3、往Dockerfile写入指令FROMregis......
  • docker-compose版本升级
    https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_641.下载安装包根据机器的架构选择具体的版本,更多的请参考官网https://github.com/docker/compose/releases架构下载地址X86https://github.com/docker/compose/releases/download/v2.4......
  • 安全参考和书安 NPM、PYPI、DockerHub 备份
    安全参考2013Dockerdockerpullapachecn0/hackcto-2013dockerrun-tid-p<port>:80apachecn0/hackcto-2013#访问http://localhost:{port}查看文档PYPIpipinstallhackcto-2013hackcto-2013<port>#访问http://localhost:{port}查看文档NPMnpminstall-ghackcto-e......
  • CEH 讲义 NPM、PYPI、DockerHub 备份
    CEHv10ModuleAllInOneDockerdockerpullapachecn0/ceh-v10-mod-allinonedockerrun-tid-p<port>:80apachecn0/ceh-v10-mod-allinone#访问http://localhost:{port}查看文档PYPIpipinstallceh-v10-mod-allinoneceh-v10-mod-allinone<port>#访问http://loca......
  • 使用Mesos管理Docker集群(Mesos + Marathon + Chronos + Docker
    1. Mesos简介1.1MesosApacheMesos 是一个分布式系统的管理软件,对集群的资源进行分配和管理。  Mesos主要由以下几部分组成:Master: 管理各Slave节点Slave: 为集群提供资源Framework: scheduler从Master请求资源,executor在Slave上执行任务Slave节点上的每个executor是......