【日常总结】Docker 磁盘占满解决方案

目录

项目背景:

问题描述

原因分析:

解决方案:

Step 1:查看硬盘使用情况

Step 2:安装crontab

Step 3:编写清理脚本cleardockerlog.sh,并执行一次

Step 4:加入定时任务,并设置立即生效

Step 5:查看是否成功

 注意事项:

1. 如果使用MobaXterm连接云服务器时执行sh报错 /bin/sh: bad interpreter: Text file busy?

项目背景:

  • ubuntu 18+
  • docker

问题描述

项目场景:无法安装新的容器,提示磁盘占满


原因分析:

提示:docker container 日志太大,需要定期清理


解决方案:

提示:添加定时清理脚本

Step 1:查看硬盘使用情况

  • 查看硬盘情况
df -h

下面是清理后的截图,清理前 /dev/vda1   use% 95% 

  • 查看当前目录下文件大小,并排序
du -sh * | sort -nr

Step 2:安装crontab

 yum install crontabs

Step 3:编写清理脚本cleardockerlog.sh,并执行一次

  • cd /etc/cron/
  • /cleardockerlog.sh
#!/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 ========"

Step 4:加入定时任务,并设置立即生效

  • 修改crontab
crontab -e
  • cleardockerlog.sh 加入定时任务,(每天2:00执行一次)
0 2 */1 * * sh /root/clean_docker_log.sh
  • :wq! 保存退出

Step 5:查看是否成功

crontab -l

 注意事项:

1. 如果使用MobaXterm连接云服务器时执行sh报错 /bin/sh: bad interpreter: Text file busy?

问题原因:MobaXterm连接时服务器开启了sftp-serv 

解决方案:查询使用cleardockerlog.sh的进程,杀死即可

  • 查询进程
lsof | grep cleardockerlog.sh

  • 杀死进程
kill -9 30040

posted @ 2023-03-02 17:16  随风落木  阅读(121)  评论(0编辑  收藏  举报  来源