0x0

docker的容器日志一般存储在/var/lib/docker/containers/下,容器的id的目录下有一个-json.log结尾的文件就是日志文件。

因为linux的文件系统原因,正在运行的容器中的日志直接删除是不会中断进程与文件的连接的,说人话就是“删不掉”(可以删除,但磁盘空间不会释放),所以直接删除就必须停止docker容器。

0x01

所以如果想不停docker容器的情况下清理日志,那就清空日志文件(这里用词是“清空”)。

echo "" | sudo tee /var/lib/docker/containers/容器id/容器id-json.log

0x02

这里我使用find命令批量清理:

find /var/lib/docker/containers/ -name *-json.log -size +10M -ok dd if=/dev/null of={} \;

参数:

-name 文件名匹配

-size +10M 匹配大小超过10M的文件

-ok 后面接匹配到文件后执行命令,会提示输入y/n的保险来确认是否执行命令,如果想不提示y/n就自动处理就将-ok替换为-exec,命令最后面接\;结束命令

这里将文件置空我使用的是dd if=/dev/null of={},其中的{}表示文件路径,是find的占位符会自动替换为匹配到的文件路径。

Last modification:January 5, 2023
如果觉得我的文章对你有用,请随意赞赏