You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器占用空间远超显示值,如何排查及清理冗余空间?

GitLab容器磁盘占用异常排查与清理方案

一、定位容器目录的隐藏占用

  • 进入目标容器的Docker目录:cd /var/lib/docker/containers/a658*
  • 检查容器日志文件:GitLab容器的JSON日志(*-json.log)如果没配置轮转,会持续膨胀,执行du -h *-json.log查看大小,这是最常见的大空间占用源。
  • 排查容器可写层与匿名卷:
    • 执行docker inspect a658,找到GraphDriver.Data.MergedDir对应的路径,进入后用du -h . --max-depth=1查看可写层的空间占用;
    • 查看Mounts字段里的匿名卷(未绑定主机目录的条目),用docker volume ls找到对应卷名,再通过docker inspect <卷名>获取路径,检查卷的大小。

二、检查Docker全局空间占用

  • 查看Docker资源占用明细:docker system df,能直观看到镜像、容器、卷、构建缓存各自的空间占比,快速定位冗余项。
  • 清理Docker冗余资源:执行docker system prune -a,会清理所有未被使用的镜像、容器、卷、网络,执行前确认不会误删业务依赖的资源。

三、GitLab容器内部深层排查

  • 检查容器内日志目录:即使根目录总大小不大,/var/log/gitlab可能未挂载到主机,占用容器可写层空间,进入容器执行du -h /var/log/gitlab --max-depth=1确认。
  • 清理临时文件:执行du -h /tmp --max-depth=1,排查是否有未清理的大临时文件。

四、主机系统层面排查

  • 用交互式工具定位大目录:安装ncdu(yum install ncdu -y)后执行ncdu /var/lib/docker,能直观遍历目录,快速找到占用空间最大的文件/目录。
  • 检查系统日志:执行du -h /var/log/* | sort -h,排查主机系统日志是否异常膨胀。

针对性清理操作

  • 截断过大的容器日志:如果是JSON日志占用空间,直接执行truncate -s 0 /var/lib/docker/containers/a658*/a658*-json.log;同时配置Docker日志轮转,编辑/etc/docker/daemon.json添加:
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}

重启Docker生效:systemctl restart docker(注意会停止所有容器,提前做好业务准备)。

  • 配置GitLab日志轮转:在挂载的/srv/gitlab/config/gitlab.rb中添加:
logging['logrotate_frequency'] = "daily"
logging['logrotate_maxsize'] = "100M"
logging['logrotate_rotate'] = 7

进入容器执行gitlab-ctl reconfigure使配置生效。

  • 清理无用Docker卷:执行docker volume prune,确认无需要保留的匿名卷后再执行。

内容的提问来源于stack exchange,提问作者entity_distributed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 00:35:23