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
=key 或 label
=key=value,它将删除具有指定标签的容器和镜像。另一种格式是 label!
=key 或 label!
=key=value,它将删除不具有指定标签的容器和镜像。
until
过滤器可以是 Unix 时间戳、日期格式的时间戳,或者是相对于机器时间的 Go 持续时间字符串(例如 10m、1h30m)。
--force, -f
不要提示确认。
--help, -h
打印使用说明。
--volumes
删除当前未被任何容器使用的卷。
参见
历史
2019 年 2 月,最初由 Dan Walsh整理。 2020 年 12 月,由 Dan Walsh根据 docs.docker.com 的文档转换了过滤器信息。