服务器因 docker 日志占用空间不足

问题处理

启动项目提示找不到缓存文件,登录界面验证码刷不出来

登录服务器重启 docker 后台服务,报错

Error response from daemon: Cannot restart container my-serve: open /var/lib/docker/containers/9988633862afc28bc8764e39a8772f6376298e5d74479226e9a98c05b9e32ce4/hash3450992418: no space left on device

提示空间不足,查看磁盘空间,发现有一个磁盘完全满了

df -h

查看 docker 日志大小

du -sh /var/lib/docker/containers/*/*-json.log

发现有一个大日志文件占用了近一半的空间
查找是哪个容器生产的日志

# 上面输出的 /var/lib/docker/containers/<容器完整ID>/
docker ps -a --no-trunc | grep <CONTAINER_ID>

停止服务

docker stop the-log-serve

删除或清空日志文件

 rm /var/lib/docker/containers/<CONTAINER_ID>/<CONTAINER_ID>-json.log
 sudo truncate -s 0 /var/lib/docker/containers/0ad56ed2d47a.../*-json.log

启动服务

docker start the-log-serve
docker start my-serve

大日志轮转处理(待完善)

使用 Linux 自带的 logrotate 配置日志轮转

vi /etc/logrotate.d/docker-containers

写入以下内容:

/var/lib/docker/containers/*/*.log {
    daily
    rotate 7
    # 保留最近7份旧日志
    size 100M
    compress
    delaycompress
    missingok
    copytruncate
    dateext
    dateformat -%Y%m%d
    notifempty
}

参考资料

posted @ 2025-05-02 15:11  MGTPEZ  阅读(22)  评论(0)    收藏  举报