当前位置:   article > 正文

Docker 磁盘占用过多问题处理过程记录

Docker 磁盘占用过多问题处理过程记录

一、问题描述

突然发现服务器磁盘使用超过95%了(截图时2.1 和 2.2 已经执行过了)

二、问题分析与解决

2.1,docker 无用镜像占用磁盘

  1. # 使用 docker images 查看服务的镜像
  2. docker images
  3. # 可以手动删除一些很大不用的
  4. docker rmi ***
  5. ## 也可以用下面的命令批量删除无用的镜像
  6. # 删除未被任何容器使用的镜像《我一般使用这个命令》
  7. docker image prune -a
  8. # 删除未使用的资源(容器、镜像、卷和网络等)《慎用》
  9. docker system prune

2.2,docker 日志积累过多

  1. ### Docker 容器的日志文件可能会增长并占用大量的磁盘空间。可以检查并删除不再需要的容器日志文件。
  2. ## 这个命令将删除 /var/lib/docker/containers/ 目录下的容器日志文件。
  3. # docker 默认安装目录执行命令
  4. # sudo find /var/lib/docker/containers/ -name "*-json.log" -type f -delete
  5. # 本人Docker映射在数据盘/data
  6. sudo find /data/docker/containers/ -name "*-json.log" -type f -delete
  7. ## 修改 daemon.json 配置,增加对log日志限制
  8. vim /etc/docker/daemon.json
  9. # 增加如下配置
  10. "log-opts":{
  11. "max-size":"100m","max-file":"3"
  12. }

2.3, docker/overlay2 下的容器文件(主要)

  1. #### /var/lib/docker/overlay2 目录下的大文件是Docker镜像或容器的层(layers)。这些层可能是由于之前的Docker容器未正确清理或删除,导致残留的层文件。
  2. ## 进入docker目录
  3. # cd /var/lib/docker
  4. # 本人Docker映射在数据盘/data
  5. cd /data/docker
  6. # 检索文件的最大深度1,即只检索汇总计算当前目录下的文件
  7. du -h --max-depth=1
  8. # 执行后发现确实是overlay2下占用最大,继续往下找
  9. cd overlay2
  10. du -h --max-depth=1
  11. # 发现有很多容器,仔细发现有几个占用特别大,于是先用命令吧大文件过滤出来(只显示大于5GB的文件和目录)
  12. du -h --max-depth=1 --threshold=5G
  13. # 执行发现一个 635G 的文件夹,继续往下找
  14. # 这里出现了两个docker比较重要的文件夹
  15. # diff 文件夹: diff 文件夹是一个只读的文件系统层,它包含了Docker镜像的变更内容。当您对容器进行修改或添加新文件时,这些变更会被记录在 diff 文件夹中。每个Docker镜像都有一个对应的 diff 文件夹,用于存储与基础镜像的差异。
  16. # merged 文件夹: merged 文件夹是一个可读写的文件系统层,它是由基础镜像和 diff 文件夹合并而成的。当您启动一个Docker容器时, merged 文件夹中的内容将作为容器的文件系统。这个文件夹是容器运行时的可写层,您可以在容器中对文件进行修改或添加新文件,这些修改将存储在 merged 文件夹中。
  17. # 综上所述 这两个文件夹内容是一样的 merged会多一些由容器本身产出的写文件,进merged继续往下找
  18. # 终于发现因为该项目一直有报错,导致日志一直积累;自己的项目这个时候就去解决这个问题,然后重新部署一下;问题解决

三、清除完后查看效果

注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/471569
推荐阅读
相关标签
  

闽ICP备14008679号