简单的整理一下一些基本概念。
简单运行一个容器:
创建一个容器:
(资料图片)
docker run -it busybox /bin/bash
然后看下进程:
ps -ef
做了一个障眼法,使用的是pid namespace方式,让容器内部只能看到由容器创建的进程。
linux 还有一些其他的机制:
比如,Mount Namespace,用于让被隔离进程只看到当前 Namespace 里的挂载点信息;Network Namespace,用于让被隔离进程看到当前 Namespace 里的网络设备和配置。
现在隔离了一些资源,似乎能让新启动的进程,只能使用被容器规范起来的资源。
但是有一个问题,那就是把资源分配出去了,到底分配多少资源。
主要是几大块吧,内存、cpu、磁盘。
Linux Cgroups 就是 Linux 内核中用来为进程设置资源限制的一个重要功能。
Linux Cgroups 的全称是 Linux Control Group。它最主要的作用,就是限制一个进程组能够使用的资源上限,包括 CPU、内存、磁盘、网络带宽等等。
举个例子
查看cgroup 限制:
mount -t cgroup
有这些限制:
举个限制cpu的例子:
进入限制cpu的目录下:
创建一个组,比如mkdir container:
改下两个参数:
echo 20000 > cpu.cfs_quota_us
限制100ms 内只能使用20ms。
现在运行一个进程:
看下cpu:
100% 了,现在限制一下这个进程的cpu。
echo 3121 > tasks
再看下cpu:
现在kill 3121
除 CPU 子系统外,Cgroups 的每一项子系统都有其独有的资源限制能力,比如:blkio,为 块 设 备 设 定 I/O 限 制,一般用于磁盘等设备;cpuset,为进程分配单独的 CPU 核和对应的内存节点;memory,为进程设定内存使用的限制。Linux Cgroups 的设计还是比较易用的,简单粗暴地理解呢,它就是一个子系统目录加上一组资源限制文件的组合。而对于 Docker 等 Linux 容器项目来说,它们只需要在每个子系统下面,为每个容器创建一个控制组(即创建一个新目录),然后在启动容器进程之后,把这个进程的 PID 填写到对应控制组的 tasks 文件中就可以了。
例如:
docker run -it --cpu-period=100000 --cpu-quota=20000 busybox /bin/sh
这样就限制了。
来看下限制:
进去查看:
大概就是这么回事了。
linux 容器化优势不多说,用的自然知道,节约能源,方便使用。
弊端:
下一篇:最后一页
鲍卫忠生前是云南省临沧市沧源佤族自治县人民法院的一名执行法官,他扎
1、原始型古茶树特点:野生、数百年树龄、树高可达10米;栽培型古茶树
巨型液氮储罐沿江出海---近日,两个长49 9米、直径5 8米的巨型液氮储罐
当地时间6月16日早上,美国亚利桑那州发生一起黑熊伤人事件,造
视频丨自贸试验区红河片区颁发首张进口中药材《药品经营许可证》(责任
中新网广州6月17日电(记者郭军)记者16日从广东省机场管理集团有限公司
男人往往是强壮和力量的象征。不过,世界卫生组织一项调查数据表明,男
6月15日,安徽省美术馆联盟成立大会在安徽省美术馆召开,宣告联盟正式
2023年06月17日07时48分沙特里亚尔 人民币汇率最新报价
证券时报e公司讯,截至今年6月10日,黑龙江黑河公路口岸开通已满一年。
X 关闭
大盘继续缩量低位盘整 波动或将加大控制好仓位
一季度厨房小家电再下滑 产品黏性需求需加强
市场增长点在哪儿?细分品类存在丰富的增量红利
劳模雷军还能“躺赢”吗?小米发布2022一季度财报净利腰斩
疫情下青海西宁“监管蓝”的“十二时辰”
小江豚搁浅长江岸滩 巡逻人员及时救援助其“回家”
X 关闭