时间:2021-05-02
docker底层技术:
docker底层的2个核心技术分别是namespaces和control groups
namespace:是容器虚拟化的核心技术,用来隔离各个容器,可解决容器之间的冲突。
主要通过以下六项隔离技术来实现:
有两个伪文件系统:/proc和/sys/
只要解耦了这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
? 1 [root@sqm-docker01 ~]# docker run -it -m 200m --memory-swap 300m centos进入容器查看限制的内存:
? 1 2 3 4 5 [root@05a0be7b870a /]# cat /sys/fs/cgroup/memory/memory.limit_in_bytes 209715200 #显示的是字节 [root@05a0be7b870a /]# cat /sys/fs/cgroup/memory/memory.memsw.limit_in_bytes 3145728002)容器对cpu限制:
通过-c或者--cpu-shares设置容器实验cpu的权重。如果不设置默认是1024.
? 1 2 3 4 //基于centos镜像,运行一个容器,名字为containerb,cpu权重限制为512: [root@sqm-docker01 ~]# docker run -it --name containerb -c 512 centos [root@b2cf9f28ce1d /]# cat /sys/fs/cgroup/cpu/cpu.shares 5123)限制容器的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
写入数据进行测试:
参数解释:
infile=从/dev/zero中提取
outfile=自定义一个名称
bs=1m 文件大小为1m
count=800 总共写800次。
oflag=direct:用来指定directory io方式写文件,这样才会使--device-write-bps生效。
可以发现每秒写入的数量为80m,大概用时26s。
正常写入磁盘时:
以上就是本次介绍的关于docker底层技术全部知识点,感谢大家的学习和对服务器之家的支持。
原文链接:https://blog.51cto.com/13972012/2446058
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言Docker是“新瓶装旧酒”的产物,依赖于Linux内核技术chroot、namespace和cgroup。本篇先来看namespace技术。Docker和
Linux容器是一种轻量级的虚拟化技术,在共享内核的基础上,基于namespace和cgroup技术做到进程的资源隔离和限制。本文将会以docker为例,介绍容
Linux容器是一种轻量级的虚拟化技术,在共享内核的基础上,基于namespace和cgroup技术做到进程的资源隔离和限制。本文将会以docker为例,介绍容
最近在尝试阅读Docker源码,一直想弄明白docker关于namespace等的代码的在哪,以及怎么触发。然而在阅读时发现根本找不到代码。。。想着还是先源码安
dockercgroup资源监控的详解1.cgroup术语解析:blkio:这个subsystem可以为块设备设定输入/输出限制,比如物理驱动设备(包括磁盘、固