Junki
Junki
Published on 2025-03-12 / 33 Visits
0
0

释放 Docker 磁盘空间:全面清除缓存的实用指南

在使用Docker的过程中,随着时间的推移,各种缓存和未使用的数据会不断占用磁盘空间,影响系统性能。本文将详细介绍如何清理Docker的磁盘缓存,帮助你释放宝贵的磁盘空间。

一、查询磁盘使用情况

在清理之前,我们首先需要了解当前Docker占用磁盘空间的情况。通过docker system df命令,能够清晰地看到不同类型的Docker对象所占用的磁盘空间。

[root@harbor ~]# docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          59        30        42.28GB   23.9GB (56%)
Containers      30        23        5.1GB     993.2MB (19%)
Local Volumes   15        12        3.721GB   89B (0%)
Build Cache     2047      0         91.33GB   91.33GB

上述命令输出结果中,分别展示了镜像(Images)、容器(Containers)、本地卷(Local Volumes)和构建缓存(Build Cache)的数量、活跃状态、占用空间以及可回收空间等信息。从这里我们能直观地知道哪些部分占用空间较大,为后续清理工作提供方向。

二、清除Docker构建缓存(Build Cache)

构建缓存是Docker在构建镜像过程中产生的临时数据,长期积累会占用大量磁盘空间。可以使用docker builder prune命令来清理这些缓存。

  • 删除所有未使用的构建缓存:执行docker builder prune命令,系统会列出可删除的构建缓存,并提示确认是否删除。
docker builder prune
  • 强制删除所有未使用的构建缓存(无需确认):如果不想每次都手动确认,可以使用-f选项。
docker builder prune -f
  • 删除所有未使用的构建缓存,包括未使用的镜像:使用--all选项,会删除所有构建缓存,包括那些可能在将来构建中有用的缓存。使用时需谨慎,避免误删重要缓存。
docker builder prune --all

三、清理构建过程中产生的中间镜像

在构建Docker镜像时,会生成许多中间镜像,这些镜像通常不会被直接使用,但却占用磁盘空间。使用docker image prune命令可以清理这些中间镜像。

docker image prune

执行该命令后,系统会列出可删除的镜像,并提示确认删除。

四、使用docker system prune进行全面清理

docker system prune命令能对Docker环境进行全面清理,删除所有未使用的容器、网络、镜像和构建缓存。

  • 删除所有未使用的对象:执行docker system prune命令,系统会列出可删除的对象,并提示确认删除。
docker system prune
  • 删除所有未使用的对象,包括未使用的镜像:使用-a选项,会删除所有未使用的镜像,包括中间镜像。同样,使用该选项时要谨慎操作,防止误删重要数据。
docker system prune -a

五、清除Docker中未使用的数据卷

Docker的数据卷用于在容器和宿主机之间持久化数据,但有些数据卷在容器删除后会变成未使用状态,继续占用磁盘空间。可以使用docker volume prune命令来清理这些未使用的数据卷。

docker volume prune

执行此命令后,Docker会要求确认是否删除这些未使用的卷,输入y确认删除。

注意事项

  • 数据丢失风险:删除未使用的卷会导致其中存储的数据被永久删除。因此,在执行此命令前,请务必确认这些卷中的数据不再需要。
  • 数据备份建议:如果不确定某些卷中的数据是否还会用到,建议先备份数据,避免数据丢失造成损失。
  • 检查未使用的卷:在删除之前,可以通过docker volume ls命令列出所有卷,并检查哪些卷未使用,以便有针对性地进行清理。

通过上述方法,我们可以有效地清理Docker环境中的各种缓存和未使用数据,释放磁盘空间,提升系统性能。尤其是在频繁创建和删除容器的开发环境中,定期清理这些数据显得尤为重要。希望本文能帮助你更好地管理Docker磁盘空间,让你的容器化开发和部署工作更加高效。


Comment