Docker 启动时 资源管理

本文深入探讨了Docker如何利用Linux Cgroup进行资源管理,包括操作系统层面的CPU、内存和IO控制,以及容器内的资源限制。通过实例展示了如何设置和监控这些控制,确保容器的稳定运行和资源的有效利用。
摘要由CSDN通过智能技术生成

目录

1 操作系统层面的控制

2 容器内的控制

3 其他控制(基于Cgroup) 


Docker启动时资源管理使用的是了linux系统本身的Linux Cgroup进行管理。

        Linux Cgroup 是限制一个进程使用的资源的上限,包括CPU、磁盘、内存、网络、带宽等。也可以对进程的优先级设计,审计,以及将进程挂起和回复等操作。

Linux Cgroup 暴露出来的接口是文件系统,以文件和目录的方式在操作系统的/sys/fs/cgroup路径下,使用mount -t cgroup可以查看。

/sys/fs/cgroup下有很多子目录(子系统):cpuset、cpu、 memory;每一个子系统都会为每个容器创建一个控制组。内面的参数可以使用docker命令进行设置。

图 1 cgroup 信息

 

图 2 查看相应的组信息

1 操作系统层面的控制

###系统本身对进程的控制

##安装cgroup控制工具
[root@server1 cpu]# yum search cgroup
[root@server1 cpu]# yum install -y libcgroup-tools.x86_64

##查看当前组信息
[root@server1 x1]# cgget -a x1           ##x1为之前在cpu目录下创建,其中组件自动继承父类

##进入内存进行测试
[root@server1 ~]# cd /sys/fs/memory
[root@server1 memory]# mkdir x1        ##创建子组件
[root@server1 x1]# echo 209715200 > memory.limit_in_bytes  ##需改配置参数
[root@server1 ~]# cd  /dev/shm  ##占内存的一半
[root@server1 shm]# touch bigfile
[root@server1 shm]# cgexec -g memory:x1 dd if=/dev/zero of=bigfile bs=1M count=200
                            ##指定该进程使用的内存策略为memory:x1中的组策略

##指定某用户的进程使用该策略
[root@server1 etc]# vim /etc/cgrules.conf        ##cgroup的配置文件
[root@server1 etc]# systemctl start cgred.service 

##系统本身的读写控制
[root@server1 blkio]# mkdir x1
[root@server1 x1]# cat blkio.throttle.write_bps_device
[root@server1 ~]# cgexec -g blkio:x1 dd if=/dev/zero of=file bs=1M count=100

 

图 3 内存占用

 

图 4 配置组文件

 

图 5 查看磁盘信息

 

图 6 io设备参数更改

 

图 7 调用直接相连

2 容器内的控制

###容器内资源控制

##CPU控制
[root@server1 ~]# docker run -it --cpu-period=100000 --cpu-quota=2000 rhel7
                                 ##长度为cpu-period中所使用的总量cpu-quota
##内存控制
[root@server1 ~]# docker run -it --memory 200M --memory-swap 200M rhel7 bash


##IO控制
[root@server1 ~]# docker run -it --device-write-bps /dev/sda:30MB rhel7 bash
        ##--device-write-bps 限制写设备的bps
        ##block IO只对direct IO 有效
图 8 容器内部查看

 

图 9资源占用
图 10 TOP查看资源
图 11 内存管理

 

图 12 设备管理

 3 其他控制(基于Cgroup) 

###其他管理

##进程的控制与恢复
[root@server1 ~]# cd /sys/fs/cgroup/freezer/docker/

                        ##FROZEN  冻结
                        ##THAWED  活跃

##容器冻结--容器解冻
[root@server1 ~]# docker container pause vm1
[root@server1 ~]# docker container unpause vm1
图 13 进程控制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值