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

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

通常docker容器都是最小化安装,不只如此系统定时器相关的服务也不存在,本身去安装也很麻烦,故此直接使用宿主机的定时器便可。linux

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

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

网上随意一搜就能够看到以下的删除模板:centos

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

由于本人的日志目录层级比较深 因此改良了以下:tomcat

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

必定记得加可执行权限centos7

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

后面通过验证 其实效果是同样的! 重点就是你要去验证你的脚本有无效! 你能够这样直接输入验证.net

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

若是能查出你想删除的文件那么后面就能够开始套模板了。日志

-mtime:标准语句写法;

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

"*.log":但愿查找的数据类型,"*.jpg"表示查找扩展名为jpg的全部文件,"*"表示查找全部文件,这个能够灵活运用,触类旁通;

-exec:固定写法;

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

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

2、宿主机加入定时器

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

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

tomcat8002 : 容器名称或者IDblog

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

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

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

接下来就OK啦!

相关文章
相关标签/搜索