跳到主要内容

Docker 存储清理

在使用Docker时,随着容器、镜像、卷和网络的不断创建和删除,系统可能会积累大量未使用的数据。这些数据会占用磁盘空间,影响系统性能。因此,定期清理Docker存储空间是一个重要的维护任务。本文将详细介绍如何清理Docker存储,并提供实际案例和代码示例。

什么是Docker存储清理?

Docker存储清理是指删除未使用的Docker资源,如未使用的镜像、停止的容器、未挂载的卷和未使用的网络。通过清理这些资源,可以释放磁盘空间,优化系统性能。

清理未使用的镜像

Docker镜像占用的磁盘空间可能非常大。随着时间的推移,您可能会积累许多未使用的镜像。可以使用以下命令清理未使用的镜像:

docker image prune -a
  • -a 选项表示删除所有未使用的镜像,而不仅仅是悬空的镜像(即没有标签的镜像)。

示例:

$ docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
deleted: sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
deleted: sha256:abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890
Total reclaimed space: 1.2GB

清理停止的容器

停止的容器也会占用磁盘空间。可以使用以下命令清理所有停止的容器:

docker container prune

示例:

$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890
Total reclaimed space: 500MB

清理未挂载的卷

Docker卷用于持久化数据,但未挂载的卷可能会占用大量磁盘空间。可以使用以下命令清理未挂载的卷:

docker volume prune

示例:

$ docker volume prune
WARNING! This will remove all local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
my_volume_1
my_volume_2
Total reclaimed space: 300MB

清理未使用的网络

Docker网络也可能占用磁盘空间。可以使用以下命令清理未使用的网络:

docker network prune

示例:

$ docker network prune
WARNING! This will remove all unused networks.
Are you sure you want to continue? [y/N] y
Deleted Networks:
my_network_1
my_network_2
Total reclaimed space: 50MB

实际案例

假设您正在开发一个Web应用程序,并且频繁地构建和测试Docker镜像。经过一段时间后,您发现磁盘空间不足。通过运行以下命令,您可以清理未使用的Docker资源:

docker image prune -a
docker container prune
docker volume prune
docker network prune

这些命令将删除所有未使用的镜像、停止的容器、未挂载的卷和未使用的网络,从而释放大量磁盘空间。

总结

定期清理Docker存储空间是保持系统性能的重要步骤。通过删除未使用的镜像、停止的容器、未挂载的卷和未使用的网络,您可以有效地释放磁盘空间并优化系统性能。

附加资源

练习

  1. 使用 docker image prune -a 命令清理未使用的镜像,并记录释放的磁盘空间。
  2. 使用 docker container prune 命令清理停止的容器,并记录释放的磁盘空间。
  3. 使用 docker volume prune 命令清理未挂载的卷,并记录释放的磁盘空间。
  4. 使用 docker network prune 命令清理未使用的网络,并记录释放的磁盘空间。

通过完成这些练习,您将更好地理解如何管理和清理Docker存储空间。