docker logs <容器ID> 是常用命令,来查看容器运行日志,但时间长了之后,就会发现越来越慢,log 太多了,这时就需要清理一下。先查看日志文件位置:

1
2
docker inspect --format='{{.LogPath}}' <容器ID>
/var/lib/docker/containers/545e06a75cc0ac8f8c1e6f7217455660187124a3eed031b5eb2f6f0edeb426cb/545e06a75cc0ac8f8c1e6f7217455660187124a3eed031b5eb2f6f0edeb426cb-json.log

查看所在目录文件夹内容大小:

1
du -h -x --max-depth=1

然后清除日志内容:

1
echo > 日志路径

用一条命令简写:

1
echo "" > $(docker inspect --format='{{.LogPath}}' <容器ID>)

查看日志时可以指定看最新的n条:

1
docker logs --tail=100 <容器ID>

也可以修改docker配置文件 daemon.json 限定log文件的大小:

1
2
3
4
{
"log-driver": "json-file",
"log-opts": {"max-size": "10m", "max-file": "3"}
}

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

然后重启docker:

1
systemctl reload docker

容器批量日志清理脚本:
编辑脚本

1
vi clean_docker_log.sh

输入以下内容:

1
2
3
4
5
6
7
8
9
10
11
#!/bin/sh 
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 ========"

脚本授权&执行:

1
2
3
4
#授权
chmod +x clean_docker_log.sh
#执行脚本
./clean_docker_log.sh