cgroup

docker背景知识2 cgroups

两盒软妹~` 提交于 2019-12-10 23:38:50
Linux cgroups linux cgroups是linux提供的限制,控制和分离一个进程集资源的功能,子进程承接所有父进程cgroups限制 主要提供如下功能 Resource limitation: 限制资源使用 Prioritization: 优先级控制 Accounting: 审计和计费 Control: 挂起恢复执行进程 提供如下子模型 blkio — this subsystem sets limits on input/output access to and from block devices such as physical drives (disk, solid state, or USB). cpu — this subsystem uses the scheduler to provide cgroup tasks access to the CPU. cpuacct — this subsystem generates automatic reports on CPU resources used by tasks in a cgroup. cpuset — this subsystem assigns individual CPUs (on a multicore system) and memory nodes to tasks in a

Docker 容器的资源限制 cgroup(九)

浪尽此生 提交于 2019-12-09 22:07:05
一、cgroup简介 docker 通过 cgroup 来控制容器使用的资源配额,包括 CPU、内存、磁盘三大方面,基本覆盖了常见的资源配额和使用量控制。 cgroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如 cpu、memory、磁盘IO等等) 的机制,被 LXC、docker 等很多项目用于实现进程资源控制。cgroup 将任意进程进行分组化管理的 Linux 内核功能。cgroup 本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O 或内存的分配控制等具体的资源管理功能是通过这个功能来实现的。这些具体的资源管理功能称为 cgroup 子系统,有以下几大子系统实现: blkio:设置限制每个块设备的输入输出控制。例如:磁盘,光盘以及 usb 等等。 cpu:使用调度程序为 cgroup 任务提供 cpu 的访问。 cpuacct:产生 cgroup 任务的 cpu 资源报告。 cpuset:如果是多核心的 cpu,这个子系统会为 cgroup 任务分配单独的 cpu 和内存。 devices:允许或拒绝 cgroup 任务对设备的访问。 freezer:暂停和恢复 cgroup 任务。 memory:设置每个 cgroup 的内存限制以及产生内存资源报告。 net_cls

Docker之Namespace与Cgroup

拜拜、爱过 提交于 2019-12-09 22:01:58
博文大纲: 一、Docker概述 二、Namespace概念 三、Cgroup基本概念与示例 一、Docker概述 1.Docker简介 Docker作为开源社区最火爆的项目,它是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”,docker的全部源代码都在https://github.com/docker 进行相关维护,其官网是: https://www.docker.com 。 Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。如图: 如图所示:鲸鱼可以看作宿主机,而集装箱可以理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。正如 Docker的设计宗旨一样:Buid、 Ship and Run Any App、 Anywhere,即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。 2.Docker和虚拟机的区别 作为一种轻量级的虚拟化方式,Docker与传统虚拟机相比具有显著的优势。如图: Docker之所以拥有众多优势,与操作系统虚拟化自身的特点是分不开的。传统虚拟机需要有额外的虚拟机管理程序和虚拟操作系统层,而Docker容器是直接在操作系统层面之上实现的虚拟化,如图: 3.Docker的使用场景

docker lxc cgroup namespace简述

余生长醉 提交于 2019-12-07 16:39:38
docker、lxc、cgroup、namespace是最近比较的技术。先了解一下他们分别是什么,然后说一下他们怎么用,具体实现机制以后再单独研究。 docker是lxc的管理器,lxc是cgroup的管理工具,cgroup是namespace的用户空间的管理接口。namespace是linux内核在task_struct中对进程组管理的基础机制。 再详细点说: docker是用go来实现的,自动化了对lxc的管理过程,能够自动在线下载相应的发行版本的rootfs。 lxc可以直接chroot到任意的系统的rootfs上并通过cgroup的限制机制来控制容器内系统的资源占有率。 cgroup通过配置文件或者命令配置后,限制相应进程或一组进程使用的系统资源。 很明显,在lxc以上已经借助于chroot机制在一个限制的容器中运行一个完整的系统了,这样多个不通过虚拟化技术的新系统就在特定的占有物理资源的限制上运行起来。据说运行效率直逼实际机器。 下面说一下用法吧,先从下往上说: cgroup 步骤: 在文件系统上建立层次结构 挂载文件系统并关联子系统 建立控制组 设置控制参数 将进程加入到控制组 通过/etc/cgconfig.conf配置或者cgroup-bin的相关指令来配置: mount { cpuset = /sys/fs/cgroup/cpuset; momory = /sys

docker之dockerfile详细学习1

梦想与她 提交于 2019-12-07 14:42:15
制作容器 基于容器做镜像 dockerfile =============================================== Dockerfile Format 1、不区分大小写 2、从上倒下执行(非注释行) 3、必须指定一个基础镜像 formart #comment INSTRUCTION arguments =============================================== 工作逻辑 专用目录 Dockerfile首字母大写,在Dockerfile中不区分大小写,推大写 需要引用的文件必须是当前目录或者之下的目录 .dockeringore--排除,排除之后就不再打包到容器 docker build 指令 FROM --最重要的,第一个非注释的行,用于为映像文件构建过程指定的基准镜像。默认情况docker build会在docker主机上查找镜像文件,如果不存在去Docker hub Registry上拉。 MAINTANIER(depreacted)--用于提供相关信息 LABEL--用于提供相关信息 替代MAINTANIER COPY--用于从Docker主机复制文件到创建的新映像文件 COPY src ..des或者 COPY ["src" "dest"],目录自己不会被复制,下面的文件或者字幕了会被复制。 ADD-

centos6 启动docker报错

守給你的承諾、 提交于 2019-12-05 17:33:51
1、启动docker报错: # service docker stop Stopping docker: [ OK ] [root@RSING data2]# service docker start Starting cgconfig service: Error: cannot mount cpuset to /cgroup/cpuset: Device or resource busy /sbin/cgconfigparser; error loading /etc/cgconfig.conf: Cgroup mounting failed Failed to parse /etc/cgconfig.conf or /etc/cgconfig.d [FAILED] Starting docker:                           [ OK ] 上面最后一行看着貌似是启动起来了,但是在使用docker运行容器的时候报如下错误: Error response from daemon: Cannot start container b38bdabe7c898a89ffbe031124fea07b3eb5a0f73a083a5cef28de82748c4f2e: [8] System error: mkdir /cgroup/docker

磁盘与文件管理工具简介-fdisk | mkf s| fsck | mount | umount | blkid | df | du

僤鯓⒐⒋嵵緔 提交于 2019-12-05 17:10:56
磁盘与文件管理工具 磁盘管理工具 fdisk fdisk命令用于观察硬盘实体使用情况,也可对磁盘进行添加、删除、转换分区等操作 语法 fdisk(选项)(参数) 选项 -b<分区大小>:指定每个分区的大小; -l:列出指定的外围设备的分区表状况; -s<分区编号>:将指定的分区大小输出到标准输出上,单位为区块; -u:搭配"-l"参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址; 参数 设备文件:指定要进行分区或者显示分区的硬盘设备文件。 实例 显示磁盘分区表状况 [root@localhost ~]# fdisk -l 磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x00005418 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 41943039 19921920 8e Linux LVM 磁盘 /dev/sdb:42.9 GB, 42949672960 字节

CGROUP九大子系统

十年热恋 提交于 2019-12-05 11:34:26
blkio -- 这个子系统为块设备设定输入/输出限制,比如物理设备(磁盘,固态硬盘,USB 等等)。 cpu -- 这个子系统使用调度程序提供对 CPU 的 cgroup 任务访问。 cpuacct -- 这个子系统自动生成 cgroup 中任务所使用的 CPU 报告。 cpuset -- 这个子系统为 cgroup 中的任务分配独立 CPU(在多核系统)和内存节点。 devices -- 这个子系统可允许或者拒绝 cgroup 中的任务访问设备。 freezer -- 这个子系统挂起或者恢复 cgroup 中的任务。 memory -- 这个子系统设定 cgroup 中任务使用的内存限制,并自动生成由那些任务使用的内存资源报告。 net_cls -- 这个子系统使用等级识别符(classid)标记网络数据包,可允许 Linux 流量控制程序(tc)识别从具体 cgroup 中生成的数据包。 ns -- 名称空间子系统。 来源: https://www.cnblogs.com/cedarlip/p/11922697.html

linux cgroups 简介

不羁的心 提交于 2019-12-04 18:55:12
cgroups(Control Groups) 是 linux 内核提供的一种机制, 这种机制可以根据需求把一系列系统任务及其子任务整合(或分隔)到按资源划分等级的不同组内,从而为系统资源管理提供一个统一的框架 。简单说,cgroups 可以限制、记录任务组所使用的物理资源。本质上来说,cgroups 是内核附加在程序上的一系列钩子(hook),通过程序运行时对资源的调度触发相应的钩子以达到资源追踪和限制的目的。 本文以 Ubuntu 16.04 系统为例介绍 cgroups,所有的 demo 均在该系统中演示。 为什么要了解 cgroups 在以容器技术为代表的虚拟化技术大行其道的时代了解 cgroups 技术是非常必要的!比如我们可以很方便的限制某个容器可以使用的 CPU、内存等资源,这究竟是如何实现的呢?通过了解 cgroups 技术,我们可以窥探到 linux 系统中整个资源限制系统的脉络。从而帮助我们更好的理解和使用 linux 系统。 cgroups 的主要作用 实现 cgroups 的主要目的是为不同用户层面的资源管理提供一个统一化的接口。从单个任务的资源控制到操作系统层面的虚拟化,cgroups 提供了四大功能: 资源限制:cgroups 可以对任务是要的资源总额进行限制。比如设定任务运行时使用的内存上限,一旦超出就发 OOM。 优先级分配:通过分配的 CPU

从零开始入门 K8s | 深入剖析 Linux 容器

不问归期 提交于 2019-12-04 17:51:54
作者 | 唐华敏(华敏) 阿里云容器平台技术专家 本文整理自《CNCF x Alibaba 云原生技术公开课》第 15 讲。 关注“阿里巴巴云原生”公众号,回复关键词“ 入门 ”,即可下载从零入门 K8s 系列文章 PPT。 导读 :Linux 容器是一种轻量级的虚拟化技术,在共享内核的基础上,基于 namespace 和 cgroup 技术做到进程的资源隔离和限制。本文将会以 docker 为例,介绍容器镜像和容器引擎的基本知识。 容器 容器是一种轻量级的虚拟化技术,因为它跟虚拟机比起来,它少了一层 hypervisor 层。先看一下下面这张图,这张图简单描述了一个容器的启动过程。 最下面是一个磁盘,容器的镜像是存储在磁盘上面的。上层是一个容器引擎,容器引擎可以是 docker,也可以是其它的容器引擎。引擎向下发一个请求,比如说创建容器,这时候它就把磁盘上面的容器镜像运行成在宿主机上的一个进程。 对于容器来说,最重要的是怎么保证这个进程所用到的资源是被隔离和被限制住的,在 Linux 内核上面是由 cgroup 和 namespace 这两个技术来保证的。接下来以 docker 为例,详细介绍一下资源隔离和容器镜像两部分的内容。 一、资源隔离和限制 namespace namespace 是用来做资源隔离的,在 Linux 内核上有七种 namespace,docker