1、使用 cgroup namespace 需要内核开启 CONFIG_CGROUPS 选项。可通过以下方式验证:

  1 root@container:~/namespace_test# grep CONFIG_CGROUPS /boot/config-$(uname -r)

  

2、查看cgroup挂载信息:

root@lord:~# mount -t cgroup
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)

  可以看到cgroup位置在 /sys/fs/cgroup/

root@lord:~# ls -l /sys/fs/cgroup/
total 0
dr-xr-xr-x 4 root root 0 Oct 12 10:32 blkio
lrwxrwxrwx 1 root root 11 Oct 12 10:32 cpu -> cpu,cpuacct
lrwxrwxrwx 1 root root 11 Oct 12 10:32 cpuacct -> cpu,cpuacct
dr-xr-xr-x 5 root root 0 Oct 12 10:32 cpu,cpuacct
dr-xr-xr-x 3 root root 0 Oct 12 10:32 cpuset
dr-xr-xr-x 5 root root 0 Oct 12 10:32 devices
dr-xr-xr-x 5 root root 0 Oct 12 10:32 freezer
dr-xr-xr-x 3 root root 0 Oct 12 10:32 hugetlb
dr-xr-xr-x 5 root root 0 Oct 12 10:32 memory
lrwxrwxrwx 1 root root 16 Oct 12 10:32 net_cls -> net_cls,net_prio
dr-xr-xr-x 3 root root 0 Oct 12 10:32 net_cls,net_prio
lrwxrwxrwx 1 root root 16 Oct 12 10:32 net_prio -> net_cls,net_prio
dr-xr-xr-x 3 root root 0 Oct 12 10:32 perf_event
dr-xr-xr-x 4 root root 0 Oct 12 10:32 pids
dr-xr-xr-x 3 root root 0 Oct 12 10:32 rdma
dr-xr-xr-x 5 root root 0 Oct 12 10:32 systemd
dr-xr-xr-x 5 root root 0 Oct 12 10:32 unified
root@lord:/sys/fs/cgroup/cpu# pwd
/sys/fs/cgroup/cpu
root@lord:/sys/fs/cgroup/cpu# ls -l
dr-xr-xr-x  5 root root   0 Oct 12 10:32 ./
drwxr-xr-x 15 root root 380 Oct 12 10:32 ../
drwxr-xr-x 2 root root 0 Oct 12 17:22 aa/
-rw-r--r-- 1 root root 0 Oct 12 17:22 cgroup.clone_children
-rw-r--r-- 1 root root 0 Oct 12 17:22 cgroup.procs
-r--r--r-- 1 root root 0 Oct 12 17:22 cgroup.sane_behavior
-r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.stat
-rw-r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage
-r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_all
-r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_percpu
-r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_percpu_sys
-r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_percpu_user
-r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_sys
-r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_user
-rw-r--r-- 1 root root 0 Oct 12 17:22 cpu.cfs_period_us
-rw-r--r-- 1 root root 0 Oct 12 17:22 cpu.cfs_quota_us
-rw-r--r-- 1 root root 0 Oct 12 17:22 cpu.shares
-r--r--r-- 1 root root 0 Oct 12 17:22 cpu.stat
-rw-r--r-- 1 root root 0 Oct 12 17:22 notify_on_release
-rw-r--r-- 1 root root 0 Oct 12 17:22 release_agent
drwxr-xr-x 99 root root 0 Oct 12 10:32 system.slice/
-rw-r--r-- 1 root root 0 Oct 12 17:22 tasks
drwxr-xr-x 2 root root 0 Oct 12 17:22 user.slice/

  

  

4.查看当前进程所关联的cgroup

root@lord:~# cat /proc/$$/cgroup
12:memory:/user.slice/user-0.slice/session-19.scope
11:net_cls,net_prio:/
10:blkio:/user.slice
9:devices:/user.slice
8:freezer:/
7:perf_event:/
6:hugetlb:/
5:cpuset:/
4:rdma:/
3:pids:/user.slice/user-0.slice/session-19.scope
2:cpu,cpuacct:/user.slice
1:name=systemd:/user.slice/user-0.slice/session-19.scope
0::/user.slice/user-0.slice/session-19.scope

 根目录就是上面查询的cgroup挂载信息: 如      5:cpuset:/ 关联 /sys/fs/cgroup/cpu

5.新增子cgroup,如新增CPU下的cgroup,并将当前进程加入tasks

写入tasks的进程 将受该cgroup的资源限制

root@lord:/sys/fs/cgroup/cpu# mkdir test
root@lord:/sys/fs/cgroup/cpu# ls -l test/
total 0
-rw-r--r-- 1 root root 0 Oct 12 17:57 cgroup.clone_children
-rw-r--r-- 1 root root 0 Oct 12 17:57 cgroup.procs
-r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.stat
-rw-r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage
-r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_all
-r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_percpu
-r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_percpu_sys
-r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_percpu_user
-r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_sys
-r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_user
-rw-r--r-- 1 root root 0 Oct 12 17:57 cpu.cfs_period_us
-rw-r--r-- 1 root root 0 Oct 12 17:57 cpu.cfs_quota_us
-rw-r--r-- 1 root root 0 Oct 12 17:57 cpu.shares
-r--r--r-- 1 root root 0 Oct 12 17:57 cpu.stat
-rw-r--r-- 1 root root 0 Oct 12 17:57 cpu.uclamp.max
-rw-r--r-- 1 root root 0 Oct 12 17:57 cpu.uclamp.min
-rw-r--r-- 1 root root 0 Oct 12 17:57 notify_on_release
-rw-r--r-- 1 root root 0 Oct 12 17:57 tasks
root@lord:/sys/fs/cgroup/cpu# cd test;echo $$ >> tasks
root@lord:/sys/fs/cgroup/cpu#   

现在可以通过更改test目录下的配置文件,设置进程组使用的CPU限制

6:docker进程与cgroup

root@lord:/sys/fs/cgroup/cpu/test# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f197f2487e5f alpine-tinghua "sh -c 'tail -f /dev…" 7 hours ago Up 7 hours bb
root@lord:/sys/fs/cgroup/cpu/test# docker inspect --format '{{.State.Pid}}' bb #查看容器在主机的进程号
11290
root@lord:/sys/fs/cgroup/cpu/test# cat /proc/11290/cgroup
12:memory:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
11:net_cls,net_prio:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
10:blkio:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
9:devices:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
8:freezer:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
7:perf_event:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
6:hugetlb:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
5:cpuset:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
4:rdma:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
3:pids:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
2:cpu,cpuacct:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
1:name=systemd:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
0::/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
root@lord:/sys/fs/cgroup/cpu/test#

  

root@lord:/sys/fs/cgroup/cpu/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope# pwd
/sys/fs/cgroup/cpu/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
root@lord:/sys/fs/cgroup/cpu/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope# ll
total 0
drwxr-xr-x 2 root root 0 Oct 12 11:03 ./
drwxr-xr-x 99 root root 0 Oct 12 10:32 ../
-rw-r--r-- 1 root root 0 Oct 12 18:07 cgroup.clone_children
-rw-r--r-- 1 root root 0 Oct 12 18:07 cgroup.procs
-r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.stat
-rw-r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage
-r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_all
-r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_percpu
-r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_percpu_sys
-r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_percpu_user
-r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_sys
-r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_user
-rw-r--r-- 1 root root 0 Oct 12 18:07 cpu.cfs_period_us
-rw-r--r-- 1 root root 0 Oct 12 18:07 cpu.cfs_quota_us
-rw-r--r-- 1 root root 0 Oct 12 18:07 cpu.shares
-r--r--r-- 1 root root 0 Oct 12 18:07 cpu.stat
-rw-r--r-- 1 root root 0 Oct 12 18:07 cpu.uclamp.max
-rw-r--r-- 1 root root 0 Oct 12 18:07 cpu.uclamp.min
-rw-r--r-- 1 root root 0 Oct 12 18:07 notify_on_release
-rw-r--r-- 1 root root 0 Oct 12 18:07 tasks
root@lord:/sys/fs/cgroup/cpu/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope#

  

当我们创建容器时传入的资源限制:如内存或者cpu 都会通过写入cgroup文件 实现资源限制

												

cgroup与docker的更多相关文章

  1. 通过cgroup给docker的CPU和内存资源做限制

    1.cpu docker run -it --cpu-period=100000 --cpu-quota=2000 ubuntu /bin/bash 相当于只能使用20%的CPU 在每个100ms的时 ...

  2. centos7下安装docker(10容器底层--cgroup和namespace)

    cgroup和namespace是实现容器底层的重要技术 cgroup:实现资源限制 namespace:实现资源隔离 1.cgroup:control group Linux操作系统通过cgroup ...

  3. Docker技术-cgroup

    分类: 虚拟化 Docker容器采用了linux内核中的cgroup技术来实现container的资源的隔离和控制. 关于cgroup我们需要了解的它的知识点: 1. 基本概念 cgroup涉及到几个 ...

  4. Docker资源限制实现——cgroup

    摘要 随着Docker技术被越来越多的个人.企业所接受,其用途也越来越广泛.Docker资源管理包含对CPU.内存.IO等资源的限制,但大部分Docker使用者在使用资源管理接口时往往还比较模糊. 本 ...

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

    目录 一.cgroup简介 二.CPU资源配额控制 1.CPU份额控制 2.CPU周期控制 3.CPU core控制 4.CPU配额控制参数的混合使用 二.对内存的限额 三.对 Block IO 的限 ...

  6. Docker namespace,cgroup,镜像构建,数据持久化及Harbor安装、高可用配置

    1.Docker namespace 1.1 namespace介绍 namespace是Linux提供的用于分离进程树.网络接口.挂载点以及进程间通信等资源的方法.可以使运行在同一台机器上的不同服务 ...

  7. 理解Docker(4):Docker 容器使用 cgroups 限制资源使用

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  8. Docker之Linux Cgroups

    Linux Cgroups介绍 上面是构建Linux容器的namespace技术,它帮进程隔离出自己单独的空间,但Docker又是怎么限制每个空间的大小,保证他们不会互相争抢呢?那么就要用到Linux ...

  9. Docker实践(5)—资源隔离

    Docker使用cgroup实现CPU,内存和磁盘IO等系统资源的限制. CPU Docker现在有2个与CPU资源相关的参数,-c可以指定CPU的占比,--cpuset可以绑定CPU.例如,指定容器 ...

  10. docker入门指南(转载)

    原文: http://bg.biedalian.com/2014/11/20/docker-start.html 关于 docker 今天云平台的同事提到, 现在的运维就是恶性循环, 因为大家都在申请 ...

随机推荐

  1. 【多线程与高并发】- synchronized锁的认知

    synchronized锁的认知 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! 目录 s ...

  2. 【TS】函数和函数类型

    在使用函数的时候,通常会给函数传值,或者给函数一个返回值调用,这个时候就会涉及到函数类型. 函数类型分为两个方面: 1.函数参数 2.函数返回值 语法: function 函数名( 参数 : 参数类型 ...

  3. C# Socket 通信时,怎样判断 Socket 双方是否断开连接

    参考内容: C#socket通信时,怎样判断socket双方是否断开连接 C#之Socket断线和重连 Socket.Poll 方法 Socket.Blocking 属性 最近需要写个网口通信的上位机 ...

  4. JZOJ 4211. 【五校联考1day2】送你一颗圣诞树

    题目 解析 \(Code\) #include<cstdio> #include<map> #include<iostream> #include<cstri ...

  5. DESIR队列:早期axSpA的脊柱放射学进展

    DESIR队列:早期axSpA的脊柱放射学进展 EULAR2015; PresentID: FRI0234 SPINAL RADIOGRAPHIC PROGRESSION IN EARLY AXIAL ...

  6. cximage菜单(Mirror)

    // ID_CXIMAGE_MIRROR 文件:CxImage\demo\demoDoc.cpp 菜单项:cximage->Mirror ON_COMMAND(ID_CXIMAGE_MIRROR ...

  7. 【C++复习】运算符优先级(简)

    只讨论个大概,不管细节不同优先级的运算符混在一起,就根据优先级算相同优先级的运算符混在一起,就看它们的结合性(这里不谈) 一定要记住:括号>基本计算>关系>逻辑>底层选手 1. ...

  8. ASP动态网页(网站)设计教程

    ASP动态网页(网站)设计教程 文件名 大小 ASP获取时间函数大全 35KB 项目6 ASP数据表数据操作功能设计.pptx 3.34 MB 项目5 WEB数据库与数据库管理.pptx 3.34 M ...

  9. Linux操作命令(九)1.comm命令 2.diff命令 3.patch命令

    1.comm 命令 比较文本文件的内容 comm 命令将逐行比较已经排序的两个文件.显示结果包括 3 列:第 1 列为只在第一个文件中找到的行,第 2 列为只在第二个文件中找到的行,第 3 列为两个文 ...

  10. .NET6+WebApi+Vue 前后端分离后台管理系统(二)

    项目搭建: 这个项目使用的开发工具是:VSCode,工具的下载和安装这里就不赘述了,自行百度吧.使用的技术主要是: Vue3.Element Plus 等,Vue 项目的搭建这里也不赘述,如果不熟悉可 ...