Top

Docker-资源限制和监控

Docker资源限制

我的环境是Centos7.4!3台服务器:Server

192.168.237.128-server

1. CPU和MEM限制并查询结果

说明:逻辑cpu就是宿主机的cpu处理器数量*内核数量.当宿主机是2处理器2内核,则可以分配0-3个逻辑cpu.一个容器中指定了cpu后就独立使用了,不会受到其他容器的干扰:列如,两个容器一个cpu指定0-1另一个2-3,是可以使用top看到cpu使用率的,而那个使用率就是容器的使用率(单独的).
↓分配逻辑CPU:0=1核和512M内存.
[root@server ~]# docker run -p 81:80 --cpuset-cpus=0 -m 512M -itd nginx:v2 /bin/bash d4f2ec808081c06cd4d1fbc76d8d751f1e8b7dbc036cc923f96e37d41feb8203
↓查询CPU使用率和MeM大小.
[root@server ~]# docker stats d4f2ec808081 --no-stream|awk '{print $2}'|sed 'N;s/\n/ /g' CPU 0.00% [root@server ~]# docker stats d4f2ec808081 --no-stream|awk -F'%' '{print $2 "'%'"}' MEM USAGE / LIMIT MEM % 484 KiB / 512 MiB 0.09%

2. Disk限制并查询结果

说明:国内系统Disk统一40G.overlay2引擎默认使用宿主机空间(无限制),Devicemapper引擎默认容器有10G空间,但是有缺点:所有容器不能超过107G.

2.1 overlay2引擎(默认)

说明:Docker容器默认启动的虚拟机,会占用宿主机的资源(CPU、内存、硬盘),使用overlay2引擎启动的默认Docker容器硬盘的rootfs根分区使用的是宿主机的空间.
[root@server sysconfig]# docker run -itd -p 80:80 docker.io/centos /bin/bash
683f4586bad4ed486d810be46d05a54830e5f2baf13520ca3e41917f6440629a
[root@server sysconfig]# docker exec -it 683f4586bad4 /bin/bash
[root@683f4586bad4 /]# df -h
 Filesystem               Size  Used Avail Use% Mounted on
 overlay                   36G  1.5G   34G   5% /

2.2 devicemapper引擎

说明:使用Devicemapper引擎启动的默认Docker容器硬盘的rootfs根分区空间是10G.
↓修改Disk引擎,将overlay2替换成devicemapper
[root@server ~]# vim /etc/sysconfig/docker-storage
1
DOCKER_STORAGE_OPTIONS="--storage-driver devicemapper"
[root@server ~]# vim /etc/sysconfig/docker-storage-setup
1
STORAGE_DRIVER=devicemapper
[root@server ~]# systemctl restart docker
↓下载镜像进入后执行查看.
[root@6ddc04353af8 /]# df -h|grep -v tmpfs Filesystem Size Used Avail Use% Mounted on /dev/mapper/docker-253:0-34167532-eed337ec77ce25c3727603 10G 247M 9.8G 3% /

2.3 devicemapper引擎扩展

说明:可以指定默认容器的大小(在启动容器的时候指定),可以在docker配置文件里通过dm.basesize参数指定,指定Docker容器rootfs容量大小为40G.
[root@server ~]# vim /etc/sysconfig/docker-storage
1
DOCKER_STORAGE_OPTIONS="--storage-driver devicemapper --storage-opt dm.basesize=40G"
↓删除这个目录里的内容,不然配置无效.
[root@server ~]# rm -rf /var/lib/docker/* [root@server ~]# systemctl restart docker
↓下载镜像进入后执行查看.
[root@edf6a8846cdb /]# df -h |grep -v tmpfs Filesystem Size Used Avail Use% Mounted on /dev/mapper/docker-253:0-34167532-9c32e5c3a6b1671f8bbd1e 40G 247M 40G 1% /