在 Podman 中,使用 podman images 命令列出本地镜像。
基础语法如下:
podman images [选项]
常用选项说明:
-a / --all:列出所有镜像(含中间层镜像),默认仅显示顶层镜像。
-q / --quiet:只输出镜像 ID(简写形式),方便后续批量操作(如删除)。
--filter / -f:按条件过滤镜像,支持多种过滤规则。例如,按仓库名过滤:podman images -f "reference=nginx"
--format:自定义输出格式,按需展示字段。例如:podman images --format "ID: {{.ID}} | 名称: {{.Repository}}:{{.Tag}}"。支持字段:.Repository(仓库)、.Tag(标签)、.ID(镜像 ID)、.Created(创建时间)、.Size(大小)等。
--digests:显示镜像的完整摘要(SHA256 哈希),用于精准定位镜像。
--no-trunc:不截断输出内容(如完整镜像 ID、长仓库名),默认会精简显示。
点击查看 podman images 命令手册。
不携带任何选项的 podman images 命仅查看顶层镜像,不列出中间层镜像,例如:
C:\Users\Administrator> podman images REPOSITORY TAG IMAGE ID CREATED SIZE localhost/myapp latest cca6bb653dae 17 minutes ago 49.9 MB localhost/myapp v2 cca6bb653dae 17 minutes ago 49.9 MB docker.io/library/ubuntu 22.04 9fa3e2b5204f 5 weeks ago 80.4 MB docker.io/library/nginx stable-alpine c318e336065b 6 months ago 49.7 MB docker.io/library/redis 5.0 99ee9af2b6b1 3 years ago 113 MB
输出字段说明:
REPOSITORY: 镜像的仓库名称,包含了镜像的来源和名称。
TAG: 镜像的标签,通常用来表示版本,latest 表示最新版本。
IMAGE ID: 镜像的唯一标识符,是一个 SHA256 哈希值的简写。
CREATED: 镜像的创建时间。
SIZE: 镜像占用的磁盘空间大小。
使用选项 -a 可以查看所有镜像,包含中间层:
podman images -a
例如:
C:\Users\Administrator> podman images -a REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 8dfb79679b22 20 minutes ago 49.9 MB localhost/myapp v2 cca6bb653dae 20 minutes ago 49.9 MB localhost/myapp latest cca6bb653dae 20 minutes ago 49.9 MB <none> <none> 9949b484705a 20 minutes ago 49.9 MB <none> <none> 391659dfee22 20 minutes ago 49.8 MB <none> <none> 3e03ca7c5c83 20 minutes ago 49.8 MB <none> <none> 2cd9f973b0de 20 minutes ago 49.9 MB <none> <none> 371f65551712 20 minutes ago 49.8 MB <none> <none> 352316f64f6b 20 minutes ago 49.8 MB <none> <none> bbc21c026aca 20 minutes ago 49.7 MB <none> <none> b10d73cf4e86 20 minutes ago 49.7 MB docker.io/library/ubuntu 22.04 9fa3e2b5204f 5 weeks ago 80.4 MB docker.io/library/nginx stable-alpine c318e336065b 6 months ago 49.7 MB docker.io/library/redis 5.0 99ee9af2b6b1 3 years ago 113 MB
上面输出中 REPOSITORY 和 TAG 均为 <none> 的镜像,大部分是中间层镜像,但也可能包含一些 “悬空镜像”(dangling images)。
中间层镜像是构建镜像时产生的临时层,Podman 采用分层文件系统,每次 Containerfile 指令(如 RUN、COPY)都会生成一个中间层,用于复用和缓存。这些层本身不可直接运行,因此没有仓库名和标签,仅作为最终镜像的组成部分。
悬空镜像(Dangling Images)是因镜像更新导致的“废弃镜像”。例如:当你用同一标签(如 latest)重新构建或拉取镜像时,旧镜像的标签会被新镜像覆盖,旧镜像就变成了悬空镜像。这类镜像不再被任何标签引用,但依然占用磁盘空间,需要手动清理。
使用 -q 选项,仅仅输出镜像 ID,如下:
C:\Users\Administrator> podman images -q cca6bb653dae 9fa3e2b5204f c318e336065b 99ee9af2b6b1
例如只显示仓库名和标签
podman images --format "{{.Repository}}:{{.Tag}}"例如:
C:\Users\Administrator> podman images --format "{{.Repository}}:{{.Tag}}"
localhost/myapp:latest
localhost/myapp:v2
docker.io/library/ubuntu:22.04
docker.io/library/nginx:stable-alpine
docker.io/library/redis:5.0
通过 -f 或 --filter 参数支持多种过滤条件,可以精准筛选出你需要的镜像。例如:
(1) 例如只显示 nginx 相关镜像:
C:\Users\Administrator> podman images nginx REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/nginx stable-alpine c318e336065b 6 months ago 49.7 MB
(2)筛选出所有 <none>:<none> 的悬空镜像:
C:\Users\Administrator> podman images -f "dangling=true" REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> d15d5919473b 6 minutes ago 429 MB
注意:这是最常用的过滤条件之一,用于清理无用镜像。
(3)按镜像仓库名或标签进行匹配,支持部分匹配:
# 匹配仓库名包含 "nginx" 的镜像 C:\Users\Administrator> podman images -f "reference=*nginx*" REPOSITORY TAG IMAGE ID CREATED SIZE localhost/my-nginx latest cca6bb653dae 50 minutes ago 49.9 MB localhost/myapp latest cca6bb653dae 50 minutes ago 49.9 MB localhost/myapp v2 cca6bb653dae 50 minutes ago 49.9 MB docker.io/library/nginx latest 60adc2e137e7 27 hours ago 155 MB docker.io/library/nginx stable-alpine c318e336065b 6 months ago 49.7 MB # 匹配特定仓库和标签 C:\Users\Administrator> podman images -f "reference=localhost/myapp:v2" REPOSITORY TAG IMAGE ID CREATED SIZE localhost/myapp v2 cca6bb653dae 50 minutes ago 49.9 MB # 匹配所有本地镜像 C:\Users\Administrator> podman images -f "reference=localhost/*" REPOSITORY TAG IMAGE ID CREATED SIZE localhost/my_app latest a6fb9abc4de4 About a minute ago 190 MB localhost/my-nginx latest cca6bb653dae 51 minutes ago 49.9 MB localhost/myapp latest cca6bb653dae 51 minutes ago 49.9 MB localhost/myapp v2 cca6bb653dae 51 minutes ago 49.9 MB
(4)基于镜像创建时间进行过滤:
# 显示在指定镜像之后创建的镜像(使用镜像ID) C:\Users\Administrator> podman images -f "since=cca6bb653dae" REPOSITORY TAG IMAGE ID CREATED SIZE localhost/my_app latest a6fb9abc4de4 2 minutes ago 190 MB <none> <none> 7aac9bc2e359 3 minutes ago 555 MB # 显示在指定镜像之前创建的镜像 C:\Users\Administrator> podman images -f "before=cca6bb653dae" REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/redis latest 1c390e3bb5cb 10 hours ago 142 MB docker.io/library/nginx latest 60adc2e137e7 27 hours ago 155 MB docker.io/bellsoft/liberica-openjre-alpine 17-cds 6dd24ed67421 3 weeks ago 170 MB docker.io/library/ubuntu 22.04 9fa3e2b5204f 5 weeks ago 80.4 MB docker.io/library/nginx stable-alpine c318e336065b 6 months ago 49.7 MB docker.io/library/redis 5.0 99ee9af2b6b1 3 years ago 113 MB docker.io/library/maven 3.8.5-openjdk-17-slim 126d58d17617 3 years ago 429 MB
(5)如果你想根据 tag 筛选镜像,可以直接使用通配符匹配:
# 筛选tag包含5.0的镜像 C:\Users\Administrator> podman images "*:5.0" REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/redis 5.0 99ee9af2b6b1 3 years ago 113 MB # 筛选redis相关且tag为5.0的镜像 C:\Users\Administrator> podman images "docker.io/library/redis:5.0" REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/redis 5.0 99ee9af2b6b1 3 years ago 113 MB # 筛选所有nginx镜像 C:\Users\Administrator> podman images "*nginx*" REPOSITORY TAG IMAGE ID CREATED SIZE localhost/my-nginx latest cca6bb653dae 57 minutes ago 49.9 MB localhost/myapp latest cca6bb653dae 57 minutes ago 49.9 MB localhost/myapp v2 cca6bb653dae 57 minutes ago 49.9 MB docker.io/library/nginx latest 60adc2e137e7 27 hours ago 155 MB docker.io/library/nginx stable-alpine c318e336065b 6 months ago 49.7 MB
(6)如果镜像确实有 label,你需要先查看镜像的详细信息来确认 label 的键值:
# 查看镜像的所有label信息
C:\Users\Administrator> podman inspect --format '{{.Config.Labels}}' nginx
'map[maintainer:NGINX Docker Maintainers <docker-maint@nginx.com>]'
# 例如查看 myapp 的 labels
C:\Users\Administrator> podman inspect --format '{{.Config.Labels}}' myapp
'map[description:Custom Nginx image with custom config and static files io.buildah.version:1.42.0 maintainer:hxstrive@outlook.com]'如果镜像有 label,你可以这样筛选:
# 筛选有特定label键的镜像 C:\Users\Administrator> podman images -f "label=maintainer" REPOSITORY TAG IMAGE ID CREATED SIZE localhost/my-nginx latest cca6bb653dae About an hour ago 49.9 MB localhost/myapp latest cca6bb653dae About an hour ago 49.9 MB localhost/myapp v2 cca6bb653dae About an hour ago 49.9 MB docker.io/library/nginx latest 60adc2e137e7 27 hours ago 155 MB docker.io/library/nginx stable-alpine c318e336065b 6 months ago 49.7 MB # 筛选label键值匹配的镜像 C:\Users\Administrator> podman images -f "label=maintainer=NGINX Docker Maintainers <docker-maint@nginx.com>" REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/nginx latest 60adc2e137e7 27 hours ago 155 MB docker.io/library/nginx stable-alpine c318e336065b 6 months ago 49.7 MB
镜像摘要是根据镜像内容计算出的 SHA256 哈希值,内容不变则摘要不变,比标签(Tag)更可靠。
你可以使用摘要来拉取特定版本的镜像,避免标签被覆盖的问题:
podman pull docker.io/library/ubuntu@sha256:9522864dd661d17bd9076860a0c34968651439692ad63889998f0b0d9befdd
如果摘要被截断,可以结合 --no-trunc 选项查看完整摘要:
podman images --digests --no-trunc
使用 --digests 选项查看镜像的摘要:
podman images --digests
例如:
C:\Users\Administrator> podman images --digests REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE localhost/myapp latest sha256:2dc84b85153815cdcbbc84c00946cac557e195ddaadc6a90589d85b198a3f100 cca6bb653dae 25 minutes ago 49.9 MB localhost/myapp v2 sha256:2dc84b85153815cdcbbc84c00946cac557e195ddaadc6a90589d85b198a3f100 cca6bb653dae 25 minutes ago 49.9 MB docker.io/library/ubuntu 22.04 sha256:104ae83764a5119017b8e8d6218fa0832b09df65aae7d5a6de29a85d813da2fb 9fa3e2b5204f 5 weeks ago 80.4 MB docker.io/library/nginx stable-alpine sha256:30f1c0d78e0ad60901648be663a710bdadf19e4c10ac6782c235200619158284 c318e336065b 6 months ago 49.7 MB docker.io/library/redis 5.0 sha256:fc5ecd863862f89f04334b7cbb57e93c9790478ea8188a49f6e57b0967d38c75 99ee9af2b6b1 3 years ago 113 MB
更多用法请参考官方文档。