Docker Prune 命令详解:清理无用的镜像、容器、卷和网络

在日常使用 Docker 的过程中,会不断地产生一些不再使用的资源,比如停止的容器、悬空的镜像、未挂载的卷以及闲置的网络。
这些资源会持续占用磁盘空间,如果不定期清理,可能导致系统磁盘告急。

为了解决这个问题,Docker 提供了一系列 prune 命令,帮助我们快速清理这些无用资源。

一、清理镜像 (Prune Images)

1. 移除悬空镜像(dangling images)

悬空镜像是指 没有标签且未被容器引用的镜像。
执行以下命令可以删除这些镜像:

docker image prune

在这里插入图片描述

2. 移除所有未使用的镜像

docker image prune -a

在这里插入图片描述

该命令会删除所有 未被容器使用的镜像,不仅仅是悬空镜像。
⚠️ 注意:这可能会移除一些暂时不用,但未来可能还需要的镜像。

3. 跳过确认提示

默认情况下,执行 prune 会要求输入确认,若想跳过可使用:

docker image prune -f

4. 使用过滤器删除

删除超过 24 小时创建的镜像:

docker image prune -a --filter "until=24h"

更多过滤规则可通过 docker image prune --help 查看。

二、清理容器 (Prune Containers)

docker container prune 就是用来清理所有已停止的容器,无论它们是因为报错异常退出

docker container prune

其他参数(如 -f, --filter)与 docker image prune 类似。
在这里插入图片描述

三、清理卷 (Prune Volumes)

卷(Volume)通常用来保存数据库、配置等持久化数据,因此不会自动删除。
但如果有卷已经不再被任何容器使用,可以清理:

docker volume prune

⚠️ 卷里可能存放重要数据,删除前务必确认。

四、清理网络 (Prune Networks)

Docker 的网络不会占用大量磁盘空间,但会产生 iptables 规则、路由项等。
可以通过以下命令清理未被容器使用的网络:

docker network prune

五、一键清理所有 (Prune Everything)

如果想要进行一次“大扫除”,可以使用:

docker system prune

该命令会清理:

  • 所有停止的容器
  • 未被使用的网络
  • 悬空镜像
  • 构建缓存

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐