【日常总结】Docker 磁盘占满解决方案
目录
Step 3:编写清理脚本cleardockerlog.sh,并执行一次
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