1、创建一个临时容器c1
docker run -it --name=c1 --rm centos:v1
监控容器的资源使用情况
docker stats
memload工具可以直接占用消耗资源
将memload工具拷贝到c1容器的opt目录下
docker cp memload-7.0-1.r29766.x86_64.rpm c1:/opt
在运行的容器中安装上传的安装包
rpm -ivh /opt/memload-7.0-1.r29766.x86_64.rpm
memload 1024 #执行命令,使得容器消耗1024M内存
此时查看容器的内存消耗已经消耗了1GB
docker stats
结束memload 1024 命令就会释放内存资源
如果不对容器的资源使用做限制,则容器能使用主机的所有资源
利用cgroup来实现容器资源限制,cgroup是linux内核自带的
拉取一个容器并指定他所能使用的内存大小 -m指定内存大小
docker run -it --name=c1 --rm -m 512m centos:v1 #创建一个容器,并指定内存可使用的内存大小为512m
查看docker中cgroup属性
docker info |grep -i cgroup
将memload工具拷贝到容器中
docker cp memload-7.0-1.r29766.x86_64.rpm c1:/opt
查看容器的资源使用情况,容器最大资源使用为512M内存
docker stats
在容器中安装memload工具
rpm -ivh /opt/memload-7.0-1.r29766.x86_64.rpm
memload 1024 #执行命令消耗1024M内存会报错,因为最多使用512M内存
memload 200 #消耗200m内存就能成功
!](https://i-blog.csdnimg.cn/direct/cca642f76c9e47d8b1887c6fd3578596.png)
对cpu限制
创建一个临时容器,并在容器中启动几个cat进程
docker run -it --name=c1 --rm centos:v1
cat /dev/zero > /dev/null &
cat /dev/zero > /dev/null &
cat /dev/zero > /dev/null &
cat /dev/zero > /dev/null &
在宿主机中查看cat进程,并查看每个cat进程运行于那个cpu(宿主机cpu为2核)
ps aux |grep -v grep | grep cat #查看cat进程
ps mo pid,comm,psr $(pgrep cat) #并查看每个cat进程属于哪个cpu
关闭临时容器,并重新创建一个容器,并指定容器运行在哪个cpu
docker run -it --name=c1 --rm --cpuset-cpus=0 centos:v1 #创建一个临时容器,并指定容器运行在cpu0上面
cat /dev/zero > /dev/null &
cat /dev/zero > /dev/null &
cat /dev/zero > /dev/null &
cat /dev/zero > /dev/null &
再次查看宿主机的cat进程,可以看到进程都运行在cpu0上面
ps aux |grep -v grep | grep cat #查看cat进程
ps mo pid,comm,psr $(pgrep cat) #并查看每个cat进程属于哪个cpu
容器运行在多个cpu上面
docker run -it --name=c1 --rm --cpuset-cpus=0-3,5 centos:v1 #创建一个容器,并指定容器进程运行在cpu0-3,5上面
cat /dev/zero > /dev/null &
cat /dev/zero > /dev/null &
cat /dev/zero > /dev/null &
cat /dev/zero > /dev/null &
在宿主机上面查看cat进程,发现占用cpu0-3,5,不会占用其他的cpu(宿主机cpu为8C)