跳到主要内容

podman system prune - 删除所有未使用的 pods、容器、镜像、网络和卷数据

概述

podman system prune 是一个用于清理不再使用的 Podman 容器、镜像、网络和卷的命令。Podman 是一个开源的容器运行时,与 Docker 兼容,但它不需要守护进程运行,而是可以作为无守护进程的容器引擎使用。system prune 命令可以帮助开发者有效地管理他们的资源,避免由于旧的、不再使用的容器和镜像占用过多的磁盘空间。

以下是关于 podman system prune 命令的详细介绍:

功能与用法

podman system prune 命令的主要功能是删除所有未使用的容器、镜像、网络和卷。默认情况下,它不会删除任何当前正在运行的容器或正在使用的镜像。

基本用法

podman system prune

执行这个命令后,Podman 会提示用户确认删除操作。如果用户希望自动执行删除而不进行任何确认,可以添加 --force-f 标志:

podman system prune -f

过滤器选项

podman system prune 支持多种过滤器选项,以便用户更精细地控制哪些资源应该被删除。例如,你可以使用 label 过滤器来仅删除具有特定标签的容器和镜像,或使用 until 过滤器来仅删除在特定时间之前创建的资源。

# 仅删除具有特定标签的容器和镜像
podman system prune --filter label=mylabel

# 仅删除在特定时间戳之前创建的资源
podman system prune --filter until=2023-01-01

注意事项

  • 在执行 podman system prune 之前,最好确保没有任何重要的容器或镜像处于未保存的状态,因为该命令会删除所有未使用的资源。
  • 如果你正在使用特定的卷或网络,并希望保留它们,那么你需要小心使用此命令,因为默认情况下,所有未使用的卷和网络也会被删除。
  • 使用 --force 标志时,请格外小心,因为这将绕过任何确认提示,直接删除资源。

结论

podman system prune 是一个强大的工具,可以帮助开发者管理和清理他们的 Podman 容器环境。通过正确使用过滤器和选项,你可以精确地控制哪些资源应该被删除,从而优化你的系统性能和存储空间。对于经常创建和销毁容器的开发者来说,定期使用 podman system prune 是一个好习惯。

podman system prune 命令用于删除本地存储中所有未使用的容器(包括孤立的和未被引用的)、pods、网络,以及可选的卷数据。

使用 --all 选项可以删除所有未使用的镜像。未使用的镜像包括孤立的镜像以及没有任何容器基于其上的镜像。

默认情况下,卷不会被删除,以防止重要数据在目前没有容器使用卷时被删除。如果需要删除卷,请在运行命令时使用 --volumes 标志。

选项

--all, -a

递归删除所有未使用的 pods、容器、镜像、网络和卷数据。(最多迭代 50 次。)

--external

删除本地存储中所有由 Podman 未管理的遗留容器存储文件。在正常情况下,不存在此类数据,但在不干净的关闭(如系统崩溃)后,Podman 数据库可能会损坏并导致这种情况发生。

但是,在使用瞬态存储模式时,Podman 数据库不会持久化。这意味着在重启后,容器会在磁盘上留下可写层。在使用瞬态存储时,建议在启动时运行 podman system prune --external 命令。

此选项与 --all--filter 不兼容,并且会取消删除未使用资源的默认行为。

--filter=filters

提供过滤器值。

filters 参数格式为 key=value。如果有多个 filter,则需要传递多个选项:--filter foo=bar --filter bif=baz

支持的过滤器:

过滤器描述
label仅删除具有(或在不使用 label!=[...] 的情况下不具有)指定标签的容器和镜像。
until仅删除在给定时间戳之前创建的容器和镜像。

label 过滤器接受两种格式。一种是 label=keylabel=key=value,它将删除具有指定标签的容器和镜像。另一种格式是 label!=keylabel!=key=value,它将删除不具有指定标签的容器和镜像。

until 过滤器可以是 Unix 时间戳、日期格式的时间戳,或者是相对于机器时间的 Go 持续时间字符串(例如 10m、1h30m)。

--force, -f

不要提示确认。

--help, -h

打印使用说明。

--volumes

删除当前未被任何容器使用的卷。

参见

podman(1), podman-system(1)

历史

2019 年 2 月,最初由 Dan Walsh整理。 2020 年 12 月,由 Dan Walsh根据 docs.docker.com 的文档转换了过滤器信息。