Docker磁盘&内存&CPU资源实战
Docker 资源实战:cpu/内存配置:
#查看帮助 docker run --help docker update --help #配置容器使用cpu /内存大小--privileged 给与容器特权 docker run -itd --privileged --name=precious --cpuset-cpus=0-0 -m 512m centos7-ssh #查看容器的内存/cpu docker inspect 558bd2ec40fd|more|grep -iE "cpu|Memory" #updata 参数:在线扩容/缩容功能 docker update --cpuset-cpus=0-1 -m 1024m 558bd2ec40fd docker update --cpuset-cpus=0-0 -m 516m 558bd2ec40fd #滚动查看容器内存/cpu 使用状态: --no-stream(静态显示) docker stats 558bd2ec40fd --no-stream docker stats 558bd2ec40fd --no-stream|awk '{print $2,$3,$4}' docker stats 558bd2ec40fd --no-stream|awk 'NR>1 {print "CPU:"$2}'
Docker 资源实战:磁盘配额
docker 容器默认启动的虚拟机,会占用宿主机的资源(CPU、内存、硬盘),例如默认docker基于0verlay2驱动方式,容器硬盘的rootfs根分区空间是整个宿主机的空间大小。
可以指定默认容器的大小(在启动容器的时候指定),可以在docker配置文件:/etc/sysconfig/docker(注意:版本不同,配置文件也不同),OPTIONS参数后面添加如下代码,指定Docker容器rootfs容量大小为40G:
OPTIONS='--storage-opt overlay2.size=40G'
以上方法只适用于新容器生成,并且修改后需要重启docker。无法做到动态给正在运行指定大小:
![](https://img2020.cnblogs.com/blog/2174174/202010/2174174-20201011183605305-1795538055.png)
1.13.x版本修改:docker 存储配置文件,加入如下代码:(默认如果已经为overlay2,则无需修改)修改后重启docker
vim /etc/sysconfig/docker-storage
DOCKER_STORAGE_OPTIONS="--storage-driver overlay2 "
vim /etc/sysconfig/docker
OPTIONS='--storage-opt overlay2.size=40G'
1.19.x(ce)版本修改:docekr配置文件:在ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -b=br0后面添加如下代码:
vim //usr/lib/systemd/system/docker.service
--storage-opt overlay2.size=40G
Overlar2 Docker 磁盘驱动模式,如果要调整其大小,通过如上的方法,会导致docker引擎服务无法启动,还需要让Linux文件设置为xfs, 并且支持目录级别的磁盘配额功能:
centos7.x xfs磁盘配额配置,新添加一块硬盘,设置磁盘配额方法如下:
1)新添加一块硬盘: fdisk -l
2)格式化硬盘为xfs文件系统格式:
mkfs.xfs -f /dev/sdb
3)创建data目录,后续作为 docker数据目录:
mkdir -p /data/
4)挂载data目录,并且开启磁盘配额功能(默认xfs支持配额功能):
挂载配额类型如下:
根据用户(uquota/usrquota/quota)
根据组(gquota/grpquota)
根据目录(pquota/prjquota)
mount -o uquota,prjquota /dev/sdb /data/
6)通过命令xfs quota设置来为precious用户和目录分配配额,也可以通过命令来查看配额信息:
xfs_quota -x -c 'limit bsoft=10M bhard=10M precious' /data xfs_quota -x -c 'report' /data/
切换precious用户测试:(保证用户需要有写权限)
chmod o+w /data/ -R su precious cd /data/ dd测试语法:创建空文件(输入或输出) dd if=[STDIN] of=[STDOUT]
7)将docker引擎默认数据存储目录:/var/lib/docker重命名,并且将/data/docker目录软链至/var/lib/下即可:(需要关闭docker服务)
mkdir -p /data/docker/ mkdir -p /data/docker-engine cd /var/lib/ mv docker docker.bak mv docker /data/ ln -s /data/docker/ . ln -s /data/docker-engine/ .
或者修改配置文件:docker.service
![](https://img2020.cnblogs.com/blog/2174174/202010/2174174-20201011184313323-100629664.png)
#z找到ExecStart部分,在此行末尾添加 --graph=你的目录: --graph=/data/docker
systemctl restart docker时会报错,重新加载下即可 systemctl daemon-reload systemctl restart docker
再次docker indo查看,发现目录已改变
8)重启docker服务,并且查看进程,可以看到docker overlay2.size大小配置:
systemctl restart docker
ps -ef|grep docker
9)基于docker服务器启动docker容器,并且查看最新容器的磁盘空间为40G,则设置容器大小成功:
docker run -itd centos7-ssh docker exec 容器ID df -h
配置10G并验证:
vim //usr/lib/systemd/system/docker.service
--storage-opt overlay2.size=10G
![](https://img2020.cnblogs.com/blog/2174174/202010/2174174-20201011184721382-425368332.png)
将磁盘挂载加入开机自启动:vim /etc/fstab(慎重修改,改不好可能导致系统起不来)
/dev/sdb /data/ xfs defaults,uquota,prjpuota 0 0
/dev/sdb /data/ xfs defaults,uquota,prjquota 0 0
出现此界面直接输入密码即可:(莫要惊慌)