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. 我Alfred Workflow工具集合

    MyToolBox 我常用的工具箱,Alfred Workflow工具集合满足日常开发使用场景.不断完善和更新Alfred Workflow. 目前包含一下功能. 时间戳转换 unicode转中文 随 ...

  2. 【KAWAKO】iphone13pro开箱流程

    目录 全程录像 检查包装盒 检查包装盒内物品 检查各种码 拆封 激活 激活之后 检查屏幕 检查其它功能 贴膜(选) References 全程录像 如果你觉得你所购买的平台 (比如某ABB格式名字的平 ...

  3. nvm管理node和npm

    安装nvm 下载地址:https://github.com/coreybutler/nvm-windows/releases 下载前卸载调node,安装时注意记住所在路径,傻瓜式安装.安装后nvm - ...

  4. JZOJ 3527.迷宫花坛(garden)

    题面 思路 考场想到 \(tarjan\) 缩点 然而忘了缩点怎么打 于是甩了个暴力 改题时学了个圆方树 发现挺好用 于是······注意重边 \(Code\) #include<cstdio& ...

  5. 【论文笔记】UNet

    语义分割的U-Net网络结构Unet是2015年诞生的模型,它几乎是当前segmentation项目中应用最广的模型.Unet能从更少的训练图像中进行学习,当它在少于40张图的生物医学数据集上训练时, ...

  6. Python实现XX短视频加密算法抓包分析及刷邀请

    Python实现XX短视频加密算法抓包分析及刷邀请 出自:https://zhuanlan.zhihu.com/p/466929667?utm_id=0 Python彳余 一个会常常更新互联网,编程的 ...

  7. 洛谷 P6021 洪水

    题意 给定一棵有 \(n\) 个结点的树,点有点权:一共有 \(m\) 次操作,每次操作包括以下两种: 在一个点的子树中删去一些结点,使得该子树中所有叶结点与该子树的根结点不连通,并且使删去的点的点权 ...

  8. SAP 后台任务定时job

    定时任务的事务码 sm36:创建定时任务 sm37:查看定时任务 JDBG:后台任务debug,在对应的sm37中对应的job页面 t-code输入 创建定时任务SM36 名称可以随便起 一般都是按自 ...

  9. mybatis-generator插件的使用及相关配置

    mybatis-generator主要用于逆向工程,根据数据库来生成实体类以及mapper映射文件 1.第一步先添加依赖 <dependency> <groupId>mysql ...

  10. 使用NibiruSDK 坑

    最近有项目要接NibiruSDK ,在使用时需要用他们提供的软件,进行项目签名,在这里包名前必须是 com.dream.*** ,否则会导致签名失败而且没有任何提示.用DreamClass打开apk, ...