在 Docker 中,缓存可能会占用大量空间,尤其是在构建镜像和运行容器时。清理 Docker 缓存可以帮助释放存储空间,以下是一些常用的清理方法:

1. 清理未使用的镜像、容器、卷和网络

Docker 提供了 docker system prune 命令来清理未使用的资源。这个命令会删除:

  • 停止的容器
  • 未被使用的网络
  • 未被使用的镜像(dangling images)
  • 未被使用的卷

执行以下命令:

docker system prune

如果想要更彻底地清理,可以加上 -a 选项,这样会删除所有未被使用的镜像,而不仅仅是“悬空镜像”(dangling images):

docker system prune -a
警告:这个命令会删除所有未被使用的资源,确保你不再需要它们。

2. 删除未使用的镜像

如果你只想删除未使用的镜像,可以运行以下命令:

docker image prune

同样,如果你想删除所有未使用的镜像(包括“悬空镜像”),可以加上 -a 选项:

docker image prune -a

3. 删除未使用的容器

如果你想删除所有已停止的容器,可以使用以下命令:

docker container prune

这会删除所有停止的容器,但保留正在运行的容器。

4. 删除未使用的卷

Docker 卷存储了容器的数据,可能在某些情况下不再需要。如果你希望删除所有未使用的卷,可以使用:

docker volume prune
注意:在删除卷之前,确保你不再需要其中存储的数据,因为删除卷是不可恢复的。

5. 删除未使用的网络

如果有多余的网络资源,可以清理它们:

docker network prune

6. 删除所有无用的资源(全面清理)

如果你希望彻底清理 Docker 系统中的所有无用资源,可以执行以下命令:

docker system prune -a --volumes

这个命令会清理:

  • 停止的容器
  • 未使用的网络
  • 未使用的镜像
  • 未使用的卷
注意:加上 --volumes 参数会删除所有未使用的卷,确保不再需要这些数据后再执行。

7. 删除特定的镜像、容器或卷

你还可以手动删除指定的镜像、容器或卷:

  • 删除容器:

    docker rm <container_id>
  • 删除镜像:

    docker rmi <image_id>
  • 删除卷:

    docker volume rm <volume_name>

8. 清理 Docker 镜像构建缓存

如果你在构建 Docker 镜像时想要清理构建缓存,可以在构建镜像时使用 --no-cache 参数:

docker build --no-cache -t <image_name> .

这个命令会忽略缓存,并且强制从头开始构建镜像。


8. 使用 docker builder prune 清理构建缓存

docker builder prune

通过定期清理 Docker 缓存,可以有效释放存储空间,特别是在持续开发和测试过程中。