清理 Docker 占用磁盘空间

当Docker容器运行时间长,日志占用过多空间时,需要清理以释放磁盘。本文介绍了如何查看Docker空间占用,理解Docker在创建容器时的目录结构,以及如何通过`docker system prune`命令清理无用的镜像、容器和数据卷。同时,解决df与du显示不一致的问题,以及处理docker构建失败的情况。
摘要由CSDN通过智能技术生成

da9e6e43e832a3ed71a130763347e97f.png

前言

Docker 容器跑久了,其产生的日志可能会占用比较多的空间,如果你跟我一样,使用的小水管级的服务器,很容易就爆了,此时就需要清理一下,今天恰巧遇到这种情况,具体如下图:

083b5623d252c11a27bfa28ddf1f2463.png

从上图可知,空间使用率已经 100% 了,这些数据主要集中在 docker 的 overlay2 上,借此清理 Docker 的机会,回顾一下 Docker 相关的一些知识。

查看 Docker 空间占用

有了 Docker,多数情况下,我们可以不再需要过于关心环境问题,但也付出了一些代价,占用空间便是其中一点。

通过下面命令,可以知道 Docker 占用空间的情况:

docker system df

该命令列出了 docker 使用磁盘的 4 种类型:

  • Images: 所有镜像占用的空间,包括拉取的镜像、本地构建的镜像

  • Containers: 运行中的容器所占用的空间(没运行就不占空间),其实就是每个容器读写层的空间

  • Local Volumes: 本地数据卷的空间

  • Build Cache: 镜像构建过程中,产生的缓存数据

对我而言,这个命令我还会加上 - v 参数,即 docker system df -v,效果如下图:

d466d3f708e8055220d945e2455e64ac.png

这图我主要看的信息就是哪些容器、数据卷是没有被使用的,此时可以通过下面命令清理 Docker 占用的空间。

docker system prune -a

该命令会删除暂停中的容器、没有关联容器的镜像、没有 tag 的镜像、没有被使用的数据卷,简单而言,没有在 run 或被使用的东西都被清理掉,注意,如果你有一些暂时暂停的容器,这个命令也会将其清理掉。

为了深入理解上述命令的作用,先讨论一下在使用 docker 镜像创建容器时,docker会创建哪些目录:

我们使用 docker 镜像创建容器时,docker会创建一些目录,如:

  • /var/lib/docker/containers/<容器ID> 目录,如果容器使用了默认的日志模式,那么该容器的日志会以 JSON 形式保存在此目录下。<

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懒编程-二两

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值