Docker底层技术Namespace & Cgroup应用
admin
2023-03-29 17:01:28
0

Docker底层技术:

docker底层的2个核心技术分别是Namespaces和Control groups
Namespace:是容器虚拟化的核心技术,用来隔离各个容器,可解决容器之间的冲突。

主要通过以下六项隔离技术来实现:
有两个伪文件系统:/proc和/sys/
Docker底层技术Namespace & Cgroup应用

  • UTS:允许每个container拥有独立的hostname(主机名)和domainname(域名),使其在网络上可以被视作一个独立的节点而非Host上的一个进程。
  • IPC:contaner中进程交互还是采用linux常见的进程间交互方法,包括常见的信号量,消息队列和共享内存。container的进程间交互实际上还是host上具有相同pid中的进程交互。
  • PID:不同用户的进程就是通过pid namesapce隔离开的,且不同namespace中可以有相同pid。所有的LXC(linux containers)进程在docker中的父进程为docker进程,每个LXC进程具有不同的namespace。
  • NET:不同用户的进程就是通过pidnamespace隔离开的,且不同namespace中可以有相同pid。所有的LXC进程在docker中的父进程为docker进程,每个lxc进程具有不同的namespace。
  • MNT:文件系统的挂载点。
  • USRE:每个container可以有不同的user和groupid,也就是说可以在container内部用container内部的用户执行程序而非Host上的用户。
只要解耦了这6项,其他系统资源即便有共用的情况,计算机也认为是在两个不同的系统中。

cgroup(控制程序对资源的占用)
实现cgroup是的主要目的是为不同用户层面的资源管理,提供一个统一化的接口。从单个进程的资源控制到操作系统层面的虚拟化。

cgroup的作用:
1) 资源的限制:cgroup可以对进程组使用的资源总额进行限制。
2) 优先级分配:通过分配的cpu时间片数量及磁盘IO带宽大小,实际上就是相当于控制了进程运行的优先级
3) 资源统计:Cgroup可以统计系统资源使用量。比如cpu使用时间,内存使用量等。
可用于按量计费。
4) 进程控制:可以对进程组执行挂起,恢复等操作。

cgroup的应用:

1)内存和交换分区的限制:
容器内包括两个部分:物理内存和swap

 在docker中可以通过参数控制容器内存的使用:
 -m或--memory:设置内存的使用限额
--memory-swap:设置swap(交换分区)的使用限额

//基于centos镜像,限制内存为200M,交换分区的内存为300M
[root@sqm-docker01 ~]# docker run -it -m 200M --memory-swap 300M centos

进入容器查看限制的内存:

[root@05a0be7b870a /]# cat /sys/fs/cgroup/memory/memory.limit_in_bytes 
209715200     #显示的是字节

[root@05a0be7b870a /]# cat /sys/fs/cgroup/memory/memory.memsw.limit_in_bytes 
314572800

2)容器对cpu限制:
通过-c或者--cpu-shares设置容器实验cpu的权重。如果不设置默认是1024.

//基于centos镜像,运行一个容器,名字为containerB,cpu权重限制为512:
[root@sqm-docker01 ~]# docker run -it --name containerB -c 512 centos
[root@b2cf9f28ce1d /]# cat /sys/fs/cgroup/cpu/cpu.shares 
512

3)限制容器的Block io(磁盘的读写):

bps:每秒读写的数据量。byte per second
iops:每秒io的次数。 io per second

--device-read-bps:设置读取设备的bps
--device-write-bps:设置写入设备的bps

--device-read-iops:设置读取设备的iops
--device-write-iops:设置写入设备的iops

//创建一个容器名为testA,并限制该磁盘每秒写入的数量为为30MB。
[root@sqm-docker01 ~]# docker run -it --name testA --device-write-bps /dev/sda:30MB centos

写入数据进行测试:
Docker底层技术Namespace & Cgroup应用

参数解释:
infile=从/dev/zero中提取
outfile=自定义一个名称
bs=1M 文件大小为1M
count=800 总共写800次。
oflag=direct:用来指定directory IO方式写文件,这样才会使--device-write-bps生效。

可以发现每秒写入的数量为80M,大概用时26s。

正常写入磁盘时:
Docker底层技术Namespace & Cgroup应用

———————— 本文至此结束,感谢阅读 ————————

相关内容

热门资讯

特朗普下令不打了,美国的“余粮... 可以说戛然而止,快得让很多人都无法适应。前两周,每一天美国都要打击伊朗一通。就在7月24日白宫会议前...
穆杰塔巴最新表态:支持黎真主党 △伊朗最高领袖穆杰塔巴·哈梅内伊(资料图)当地时间7月26日晚,伊朗最高领袖穆杰塔巴·哈梅内伊对黎巴...
美军瘫痪一艘驶向伊朗的油轮,特... 美国总统特朗普虽下令暂停打击伊朗,但美军仍在执行对霍尔木兹海峡的封锁任务。针对美军瘫痪一艘驶向伊朗油...
“小牌大耍”的底气到底是哪里来... 澎湃首席评论员 李平这两天,“艺人李权哲乘高铁占座事件”在网上引发热议,该艺人参加的活动主办方曾发布...
越南籍船舶南海遇险沉没,中方已... 据凤凰卫视报道,一艘越南船舶7月24日夜间在越南庆和以东220海里附近遇险沉没,船上共62名越南籍人...
李权哲占座、蒙面、装死:娱乐圈... 你买了一张高铁一等座的票,找到自己的位置,18A。有人坐着。你拿出手机看了眼购票记录——没错,18A...
杭州景区咖啡店闯入1条幼蛇,仅... 夏天气温高、湿度大,蛇类活动进入高峰期,千万别被“小蛇无害”的刻板印象骗了!有些幼蛇看着迷你可爱,实...
AI开源公开信签署企业增至50... IT之家 7 月 26 日消息,英伟达、微软、IBM、Meta 等 25 家美国科技企业本周(7 月...
南阳快手短视频代运营企业的服务... 在短视频平台快速发展的背景下,企业通过快手等渠道进行内容运营已成为常见的市场动作。对于希望借助短视频...
普通人该如何跟上科技发展的步伐 这个被称作科技的词汇, 听起来既有宏大之感, 又颇为遥远, 好似仅仅归属于在实验室里专心致志钻研的科...