docker目录 /var/lib/docker/containers 日志清理

本文介绍了如何通过du命令查找并清理Docker容器占用大量磁盘的日志,以及如何在Docker daemon.json中设置日志大小限制,确保长期存储的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

Docker在不重建容器的情况下,日志文件默认会一直追加,时间一长会逐渐占满服务器的硬盘的空间,内存消耗也会一直增加。

查出占用磁盘较大的文件

Docker 的日志文件存在 /var/lib/docker/containers 目录中,通过下面的命令可以将日志文件夹根据升序的方式罗列出来。

du -d1 -h /var/lib/docker/containers | sort -h

输出如下:

50G    /var/lib/docker/containers/a5f661b85d226ed9b40702c54fcbfab44d983e4a6ad05a94f5013d17e364c5f7
46G    /var/lib/docker/containers/c00c292830ff312f8e6c3ae771b54c30bf8ac92fab2e44c0e60c6b3eed84cf98
36G    /var/lib/docker/containers/ff8395dbb6d5e52e136a2f55d93cf7f41db05b18c37b92f3aa24807ea3d46644
...

二、清理日志

由于日志文件比较多,一个个清理比较麻烦,这里直接使用脚本清理

clean_docker_logs.sh

内容如下:

#!/bin/bash
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   =========================="

执行脚本,就可以一键清理。

再次查看,发现已经清理好了。

# du -sh /var/lib/docker/containers
148K    /var/lib/docker/containers

三、控制容器日志大小

以上只是临时解决的方式,不适合长期运行。

全局配置

创建或修改文件 /etc/docker/daemon.json,并增加以下配置

{
    "log-driver":"json-file",
    "log-opts":{
        "max-size" :"50m","max-file":"3"
    }
}

max-size=50m,意味着一个容器日志大小上限是50M, max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json。可以存在的最大日志文件数。如果超过最大值,则会删除最旧的文件。**仅在max-size设置时有效。默认为5。

随后重启 Docker 服务

sudo systemctl daemon-reload
sudo systemctl restart docker

注意:设置的日志大小,只对新建的容器有效。已存在的容器不会生效,需要重建才可以。

本文参考链接:https://www.cnblogs.com/zhangmingcheng/p/13960496.html

https://blog.youkuaiyun.com/weixin_41476014/article/details/103568756

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值