• 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

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

  • 相关阅读:
    磊哥评测之数据库:腾讯云MongoDB vs自建
    一文看透浏览器架构
    必看!如何让你的LBS服务性能提升十倍!
    亿级曝光品牌视频的幕后设定
    Node 框架接入 ELK 实践总结
    大数据与 AI 生态中的开源技术总结
    数据库分片(Database Sharding)详解
    QQ音乐的动效歌词是如何实践的?
    Sql Server之旅——第九站 看公司这些DBA们设计的这些复合索引
    Sql Server之旅——第八站 复合索引和include索引到底有多大区别?
  • 原文地址:https://www.cnblogs.com/fengyuanfei/p/13798647.html
Copyright © 2020-2023  润新知