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
的占位符会自动替换为匹配到的文件路径。
One comment
妙啊OωO