Docker容器日志清理方案

Docker容器在运行过程当中会产生不少日志,长此以往,磁盘空间就被占满了,如下分享docker容器日志清理的几种方法linux

删除日志

在linux上,容器日志通常存放在 /var/lib/docker/containers/container_id/ 下, 以json.log结尾,找到这些文件,删除便可,须要注意的是若是容器处在运行状态,使用 rm -rf 方式删除日志后,经过 df -h 会发现磁盘空间并无释放,缘由是在Linux或者Unix系统中,经过 rm -rf 或者文件管理器删除文件,将会从文件系统的目录结构上解除连接(unlink);若是文件此时是被打开的(有一个进程正在使用),那么进程将仍然能够读取该文件,磁盘空间也一直被占用;因此经过rm -rf删除日志时须要重启docker,以释放资源,这样很是不方便。docker

因此清理docker日志的正确方法是json

cat /dev/null > *-json.log

从根本上解决Docker容器日志空间占用问题

经过以上两种方式清理以后,随着时间的推移,容器日志又会逐渐增大,可谓指标不治本,要从根本上解决问题,须要限制容器服务的日志大小上限;这个经过修改docker的配置文件来实现bash

在docker的配置文件/etc/docker/daemon.json(默认路径)中添加如下内容便可rest

"log-opts": {
       "max-size": "500m",
       "max-file": "3"
    }
  • max-size=500m,意味着一个容器日志大小上限是500M
  • max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json

重启docker进程日志

systemctl daemon-reload
systemctl restart docker

须要注意的是在这里设置的日志大小,只对新建的容器有效。code

相关文章
相关标签/搜索