Docker 宿主机定时清除容器的运行日志

原创
2018/07/07 17:53
阅读数 5.1K

docker 宿主机定时清除容器的运行日志

一般docker容器都是最小化安装,不仅如此系统定时器相关的服务也不存在,自己去安装也很麻烦,故此直接使用宿主机的定时器即可。

一、在容器中编写清除日志脚本

这一部分不论你是把定时器加在宿主机或者是容器都必须要去做的 ;

网上随意一搜就可以看到如下的删除模板:

find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;

因为本人的日志目录层级比较深 所以改良了如下:

-- /opt/auto-del-log.sh 
#!/bin/sh
find /home/schedule_log/ -mtime -5 -type f -iname "*.log" -exec rm -rf {} \;

一定记得加可执行权限

chmod +777 /opt/auto-del-log.sh

后面经过验证 其实效果是一样的! 重点就是你要去验证你的脚本有无效! 你可以这样直接输入验证

find /home/schedule_log/  -type f -iname "*.log"
或者
find /home/schedule_log/  -name "*.log"

如果能查出你想删除的文件那么后面就可以开始套模板了。

-mtime:标准语句写法;

+30:查找30天前的文件,这里用数字代表天数;

"*.log":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;

-exec:固定写法;

rm -rf:强制删除文件,包括目录;

{} \; :固定写法,一对大括号+空格+\+; 

二、宿主机加入定时器

使用docker exec 命令校验之前写的脚本是否有效 如下:

docker exec -it tomcat8002 /opt/auto-del-log.sh

tomcat8002 : 容器名称或者ID

/opt/auto-del-log.sh :脚本在容器中的位置

如果此命令有效那么就可以编辑定时器了 本人采用的是centos7 具体可以参看网上介绍的挺全的一篇博客如下: centos7 linux定时任务详解

 crontab -e
 
02 4 * * *  docker exec -it tomcat8002 /opt/auto-del-log.sh

接下来就OK啦!

展开阅读全文
打赏
0
9 收藏
分享
加载中
更多评论
打赏
0 评论
9 收藏
0
分享
返回顶部
顶部