跳到主要内容

从本地存储中删除所有未使用的镜像

摘要

podman image prune [选项]

描述

podman image prune 命令会从本地存储中删除所有孤立的镜像。如果使用 all 选项,则会删除所有未使用的镜像(即没有被任何容器使用的镜像)。

镜像修剪命令不会修剪仅使用其他镜像所必需的层的缓存镜像。

选项

--all, -a

删除孤立的镜像以及没有关联容器的镜像。

--external

即使这些镜像被外部容器使用(例如构建容器),也删除它们。

--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),计算方式相对于机器的时间。

示例

删除所有孤立的镜像

podman image prune

删除所有未使用的镜像

podman image prune --all

删除具有特定标签的镜像

podman image prune --filter label=mylabel=myvalue

删除不包含特定标签的镜像

podman image prune --filter label!=mylabel

删除在特定时间戳之前创建的镜像

podman image prune --filter until=2023-01-01T00:00:00Z

删除在1小时前创建的镜像

podman image prune --filter until=1h

返回值

命令成功执行后,将返回已删除镜像的列表及其详细信息。如果发生错误,将返回相应的错误消息。

注意事项

  • 在运行 podman image prune 命令之前,请确保您了解该命令的作用,并谨慎操作,以免误删重要镜像。
  • 使用 --all 选项时,将删除所有未使用的镜像,包括那些可能由未来的容器使用的镜像。因此,在使用这个选项之前,请确保您确实需要删除这些镜像。
  • 过滤器选项可以帮助您更精确地控制要删除的镜像。请根据您的需求选择适当的过滤器。

--force, -f

该选项用于在删除容器时不提供交互式提示,直接执行删除操作。

--help, -h

该选项用于打印命令的使用说明。

*示例

从本地存储中删除所有孤立的镜像:

sudo podman image prune

WARNING! 这将删除所有孤立的镜像。
您确定要继续吗? [y/N] y
f3e20dc537fb04cb51672a5cb6fdf2292e61d411315549391a0d1f64e4e3097e
324a7a3b2e0135f4226ffdd473e4099fd9e477a74230cdc35de69e84c0f9d907

从本地存储中删除所有未使用的镜像,无需确认:

sudo podman image prune -a -f
f3e20dc537fb04cb51672a5cb6fdf2292e61d411315549391a0d1f64e4e3097e
324a7a3b2e0135f4226ffdd473e4099fd9e477a74230cdc35de69e84c0f9d907
6125002719feb1ddf3030acab1df6156da7ce0e78e571e9b6e9c250424d6220c
91e732da5657264c6f4641b8d0c4001c218ae6c1adb9dcef33ad00cafd37d8b6
e4e5109420323221f170627c138817770fb64832da7d8fe2babd863148287fca
77a57fa8285e9656dbb7b23d9efa837a106957409ddd702f995605af27a45ebe

根据给定的时间/小时从本地存储中删除所有未使用的镜像:

sudo podman image prune -a --filter until=2019-11-14T06:15:42.937792374Z

WARNING! 这将删除所有孤立的镜像。
您确定要继续吗? [y/N] y
e813d2135f17fadeffeea8159a34cfdd4c30b98d8111364b913a91fd930643e9
5e6572320437022e2746467ddf5b3561bf06e099e8e6361df27e0b2a7ed0b17b
58fda2abf5042b35dfe04e5f8ee458a3cc26375bf309efb42c078b551a2055c7
6d2bd30fe924d3414b64bd3920760617e6ced872364bc3bc6959a623252da002
33d1c829be64a1e1d379caf4feec1f05a892c3ef7aa82c0be53d3c08a96c59c5
f9f0a8a58c9e02a2b3250b88cc5c95b1e10245ca2c4161d19376580aaa90f55c
1ef14

### 从本地存储中删除所有带有标签 version 1.0 的未使用镜像

可以使用 `podman image prune` 命令结合 `--filter` 选项来指定只删除带有特定标签的未使用镜像。以下是删除所有带有标签 `version=1.0` 的未使用镜像的命令:

```bash
sudo podman image prune -a -f --filter label=version=1.0

这条命令的含义是:

  • -a--all:删除所有未使用的镜像,包括中间层镜像。
  • -f--force:强制删除镜像,不提示用户确认。
  • --filter label=version=1.0:只删除带有标签 version 且其值为 1.0 的镜像。

执行此命令后,Podman 会删除所有符合条件的镜像,并输出被删除的镜像ID。

请注意,在删除镜像之前,请确保这些镜像不再被任何容器使用,否则可能会导致容器无法正常运行。如果需要进一步了解镜像的使用情况,可以先使用 podman image ls 命令查看本地存储中的所有镜像及其相关信息。

相关内容

podman(1) - Podman 是一款无需守护进程即可运行 Docker 容器的工具。通过查看此手册页,您可以了解 Podman 的使用方法、选项和命令。

podman-images(1) - 这个手册页提供了关于 Podman 镜像管理命令的详细信息,包括列出、查看、创建、删除等操作。

podman-image(1) - 提供关于 Podman 镜像管理的基本命令和操作的信息,包括创建、导入、导出等。

podman-image-ls(1) - 用于列出本地存储中的所有镜像及其详细信息。这个命令可以帮助您查看哪些镜像存在以及它们的标签、大小等属性。

podman-image-rm(1) - 用于删除一个或多个镜像。如果您知道特定的镜像ID或名称,可以使用此命令来手动删除它们。

这些手册页和命令提供了 Podman 在镜像管理方面的完整功能,帮助您更好地控制和优化本地存储中的镜像资源。

请注意,为了获取最准确和最新的信息,建议直接查阅 Podman 的官方文档或手册页,因为软件功能和命令可能会随着版本的更新而有所变化。您可以使用 man 命令来查看这些手册页,例如:man podman-image

历史

2018年12月,最初由 Brent Baude 编译。

2020年12月,Dan Walsh 将来自 docs.docker.com 的过滤器信息转换为 Podman 相关的文档。


Podman 是一个开源项目,旨在提供与 Docker 兼容的容器运行时功能,但它设计为不需要守护进程运行。这使其在一些对系统资源有严格限制或者需要避免守护进程运行的环境中特别有用。通过 Podman,用户可以创建、运行、管理和删除容器,就像使用 Docker 一样,但具有更低的系统开销和更高的灵活性。