Docker容器日志清理

[如何清理Docker占用的磁盘空间? - DockOne.io](http://dockone.io/article/3056)

补充:

1. 查看docker日志文件,单独列出每个容器的日志文件大小。
 
       ls -lh $(find /var/lib/docker/containers/ -name *-json.log)
       
2. docker容器所在目录  /var/lib/docker

3.  [docker的/var/lib/docker目录迁移 - 熊小熊的个人页面 - OSCHINA](https://my.oschina.net/qbj/blog/2998164)

4. 设置Docker容器日志大小(治本)
   
   4.1 设置一个容器服务的日志大小上限

      在启动容器的时候增加一个参数设置该容器的日志大小,及日志驱动

       --log-driver json-file  #日志驱动
       --log-opt max-size=[0-9+][k|m|g] #文件的大小
       --log-opt max-file=[0-9+] #文件数量
   
   4.2 编辑文件/etc/docker/daemon.json, 增加以下日志的配置

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

   4.3 然后重启docker守护进程
   
       systemctl daemon-reload
       systemctl restart docker

   
   #### 注意:设置的日志大小,只对新建的容器有效。
   
5. 删除docker容器(正在运行的,避免影响线上)日志的时候,尽量不用rm
   
  如果docker容器正在运行,那么使用rm -rf 方式删除日志后,通过df -h会发现磁盘空间并没有释放
   
  原因:在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。
   
  方案:采用 truncate -s 0 日志名 来处理,这样清理出了空间,同时不影响线上环境。若执意要用rm删除,就必须重启docker,这样影响线上环境。

   

你可能感兴趣的:(docker)