Docker容器日志清理
背景
docker容器在运行过程中会产生日志,日志的量跟具体的容器有关。
比如最近在工作中用到了selenium和scrapyd等容器,运行过程中产生的日志特别多,刚开始部署服务没在意日志的设定,一段时间后直接导致服务器磁盘存储占用达到100%,程序崩溃。
因此有必要对容器日志做出限制或定期清理等方案。
日期清理方案
确定日志存储位置
对于linux,我用的是centos7,容器日志的存放位置为 /var/lib/docker/containers/<container_id>/ ,日志文件名字格式为 <container_id>-json.log 。
如下图,文件的大小为字节。
清理日志
手动清理
可手动删掉该日志文件,但是删除的时候要将容器暂停。
编写脚本
注:该脚本参考源自 https://www.jianshu.com/p/28f1acb11f6b ,亲测可行
#!/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 ========"
可使用crontab等工具,定时自动执行该脚本,此脚本执行时无需关闭容器。
crontab的简单使用可参考 https://www.cnblogs.com/wangzg97/p/15261660.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗