centos 清理磁盘空间 及 内存占用,docker容器优化清理

时间:2024-04-08 18:22:21

一、磁盘空间

1.使用df -l 命令查看本地文件系统

centos 清理磁盘空间 及 内存占用,docker容器优化清理

可以看到大量磁盘空间被docker容器的日志占用

使用docker system df命令,类似于Linux上的df命令,用于查看Docker的磁盘使用情况:

centos 清理磁盘空间 及 内存占用,docker容器优化清理

docker system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。docker system prune -a命令清理得更加彻底,可以将没有容器使用Docker镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了……所以使用之前一定要想清楚

执行docker system prune -a

centos 清理磁盘空间 及 内存占用,docker容器优化清理

 

再查看一下,可以看到清理了4G多的磁盘空间

centos 清理磁盘空间 及 内存占用,docker容器优化清理

更多有关docker system的命令讲解,详见http://dockone.io/article/2258

 

接下来,查看docker各个容器的日志空间占用

ls -lh $(find /var/lib/docker/containers/ -name *-json.log)

centos 清理磁盘空间 及 内存占用,docker容器优化清理

可以看到其中一个容器的日志占用达到了27G,我们要对他进行清理

清理脚本如下:

!/bin/sh 
  
echo "======== start clean docker containers logs ========"  
  
logs=$(find /var/lib/docker/containers/ -name *-json.log)  
  
for log in $logs  
        do  
                echo "clean logs : $log"  
                cat /dev/null > $log  
        done  

echo "======== end clean docker containers logs ========"  

执行完清理之后,在查看日志使用情况

centos 清理磁盘空间 及 内存占用,docker容器优化清理

可以看看到都已经释放完毕。

但是,这样手动清理是治标不治本的方法,过不了几天日志又会增长到几十个G

治本方案:

全局设置

新建/etc/docker/daemon.json,若有就不用新建了。添加log-dirver和log-opts参数,样例如下:

# vim /etc/docker/daemon.json

{

"registry-mirrors": ["http://f613ce8f.m.daocloud.io"],

"log-driver":"json-file",

"log-opts": {"max-size":"500m", "max-file":"3"}

}

max-size=500m,意味着一个容器日志大小上限是500M,

max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json。

// 重启docker守护进程

# systemctl daemon-reload

# systemctl restart docker

 

二、内存清理

查看docker各个容器内存使用情况:docker stats

参考http://www.cnblogs.com/sparkdev/p/7821376.html

docker限制容器内存具体参考:https://www.cnblogs.com/sparkdev/p/8032330.html

具体内存的优化需要根据各个容器实例的具体情况分别,后续会对一些常见容器,如nginx,gitlab ,mysql, mongodb,redis,apollo,elk,consul,webapi,skywalking等等做具体说明。