Docker日志清理可以通过以下几种方式实现:
# 查看容器日志大小
docker inspect --format='{{.LogPath}}' <container_name_or_id> | xargs ls -lh
# 清空单个容器日志文件
truncate -s 0 $(docker inspect --format='{{.LogPath}}' <container_name_or_id>)
# 清理所有容器的日志文件
find /var/lib/docker/containers/ -name "*-json.log" -exec truncate -s 0 {} \;
在/etc/docker/daemon.json
中添加日志配置(需重启docker服务):
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
可以配置Docker使用其他日志驱动,如journald
或syslog
:
{
"log-driver": "journald"
}
# 清理停止的容器、未使用的网络、悬空镜像和构建缓存
docker system prune
# 彻底清理(包括未使用的卷)
docker system prune --all --volumes
可以创建定时任务自动清理:
#!/bin/bash
echo "======== Docker logs cleanup started at $(date) ========"
logs=$(find /var/lib/docker/containers/ -name '*-json.log')
for log in $logs; do
echo "Cleaning $log"
truncate -s 0 $log
done
echo "======== Docker logs cleanup completed at $(date) ========"
以上方法可以根据实际需求选择使用,建议在非生产环境先测试效果。