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。无法做到动态给正在运行指定大小:
 

 

 

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

 

#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

 

 

 

 

 

 

 

将磁盘挂载加入开机自启动:vim /etc/fstab(慎重修改,改不好可能导致系统起不来)

/dev/sdb        /data/  xfs     defaults,uquota,prjpuota 0 0
/dev/sdb /data/     xfs     defaults,uquota,prjquota 0 0

出现此界面直接输入密码即可:(莫要惊慌)

 

 

 

 

posted on 2020-10-11 18:36  蜂蜜log  阅读(502)  评论(0编辑  收藏  举报

导航