插件窝 干货文章 docker如何清理日志

docker如何清理日志

Docker 清理 日志 容器 154    来源:    2025-04-27

Docker日志清理方法

Docker日志清理可以通过以下几种方式实现:

1. 单容器日志清理

# 查看容器日志大小
docker inspect --format='{{.LogPath}}' <container_name_or_id> | xargs ls -lh

# 清空单个容器日志文件
truncate -s 0 $(docker inspect --format='{{.LogPath}}' <container_name_or_id>)

2. 全局日志清理

# 清理所有容器的日志文件
find /var/lib/docker/containers/ -name "*-json.log" -exec truncate -s 0 {} \;

3. 配置日志轮转

/etc/docker/daemon.json中添加日志配置(需重启docker服务):

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

4. 使用日志驱动

可以配置Docker使用其他日志驱动,如journaldsyslog

{
  "log-driver": "journald"
}

5. 清理无用的Docker对象

# 清理停止的容器、未使用的网络、悬空镜像和构建缓存
docker system prune

# 彻底清理(包括未使用的卷)
docker system prune --all --volumes

6. 定时清理脚本

可以创建定时任务自动清理:

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

注意事项

  1. 清理日志前确保不再需要这些日志
  2. 生产环境建议配置日志轮转而非直接删除
  3. 某些应用可能需要特定的日志处理方式
  4. 清理后可能需要重启相关服务才能释放磁盘空间

以上方法可以根据实际需求选择使用,建议在非生产环境先测试效果。