Podman 教程

Podman 列出本地镜像

在 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)重新构建或拉取镜像时,旧镜像的标签会被新镜像覆盖,旧镜像就变成了悬空镜像。这类镜像不再被任何标签引用,但依然占用磁盘空间,需要手动清理。

  

只显示镜像 ID

使用 -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

更多用法请参考官方文档。

  

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号