问题排查
查看系统磁盘空间大小
#查看磁盘占用情况df-TH
结果:发现根目录下磁盘docker可用空间不足,这种情况可能出现是一下几种情况引起的:
1、docker中废弃的none镜像过多占用空间大
2、docker服务产生的日志过多
3、分配磁盘空间不足
查看各个目录占用情况
命令:du-sh/* //查看根目录文件占用的磁盘大小参数说明:-a //显示目录中所有子目录和文件占用大小-s //表示统计目录下占用的总空间大小
清除废弃文件
1、Docker 清理none镜像
命令:docker system prune //清理容器中废弃的镜像,容器,网络等
2、清理日志
先查看日志所在目录
命令:docke info //查看docker部署的详细信息 可知docker部署在、/var/lib/docker中
在目录中会存在以目录名为前缀,以“-json.log”为后缀的目录文件。
清理
// 可使用如下命令对该文件的内容进行清理: cat /dev/null > *-json.log //此命令相当于删除日志放入回收站df -h //再次查看磁盘占用情况,发现docker占用内存少了 df -TH
有兴趣的同学可用去看下cat /dev/null的作用
脚本删除docker中日志
1、脚本处理
如果针对此问题经常出来,手动每次进行清理特别麻烦,可采用脚本来进一步改进。比如设置一个查看的脚本docker_log_size.sh:
echo"======== start clean docker containers logs ========"logs=$(find /var/lib/docker/containers/ -name *-json.log)for log in$logsdoecho"clean logs : $log"cat /dev/null > $logdoneecho"======== end clean docker containers logs ========"
2、使用crontab定时任务设置(简单说明下命令)
参数说明:
crontab -e //创建定时任务定时执行脚本 保存退出即可,cron写的不对 有问题会报错
crontab -l 列出某个用户cron服务的详细内容
crontab -r 删除某个用户的cron服务(慎用)
linux中使用crontab创建定时任务
补充:
我们也可以设置docker允许日志的大小和个数
Docker限制日志文件大小