跳到主要内容

Podman Search 命令介绍手册

一、概述

Podman 是一个开源的容器运行时工具,用于管理容器而无需守护进程。podman search 命令允许开发者搜索容器镜像仓库中的镜像,以便找到满足特定需求的镜像。这个命令对于快速发现和选择适当的容器镜像非常有用。

二、基本语法

podman search [OPTIONS] TERM

  • OPTIONS:可选参数,用于配置搜索操作。
  • TERM:要搜索的关键词或短语。

三、常用选项

  • --authfile:指定认证文件的路径,用于访问需要认证的镜像仓库。
  • --format:指定输出格式,如表格、JSON等。
  • --limit:限制搜索结果的数量。
  • --no-trunc:不截断输出结果中的字段。
  • --sort:按照特定字段对结果进行排序,如星星数、创建时间等。

四、使用示例

  1. 搜索包含关键词 "nginx" 的镜像

podman search nginx

这将返回与 "nginx" 相关的所有镜像列表,包括镜像名称、描述、星星数(表示受欢迎程度)等信息。

  1. 限制搜索结果数量

如果您只想查看前五个搜索结果,可以使用 --limit 选项:

podman search --limit 5 nginx

  1. 按照星星数排序搜索结果

要按照星星数从高到低对搜索结果进行排序,可以使用 --sort 选项:

podman search --sort stars -n nginx

请注意,-n 表示降序排序。如果您想按升序排序,请省略 -n

  1. 使用 JSON 格式输出搜索结果

如果您希望将搜索结果以 JSON 格式输出,以便后续编程处理,可以使用 --format 选项:

podman search --format json nginx

五、注意事项

  • 默认情况下,podman search 命令会搜索公共的容器镜像仓库(如 Docker Hub)。如果您使用的是私有仓库或需要特殊配置的仓库,请确保配置了正确的认证信息。
  • 搜索结果可能包含大量数据,特别是在没有使用 --limit 选项时。请确保您的终端或输出设备能够处理大量输出。

六、总结

podman search 命令是 Podman 工具集中用于搜索容器镜像的重要命令。通过结合不同的选项和参数,您可以高效地搜索和发现满足您需求的镜像。希望本手册能帮助您更好地理解和使用 podman search 命令。

--filter-f=filter

基于提供的条件过滤输出(默认为 [])

支持的过滤器有:

  • stars (int) - 图像显示所需的最小星数
  • is-automated (布尔值 - true | false) - 图像是否是自动化的
  • is-official (布尔值 - true | false) - 图像是否是官方的

--format

使用 Go 模板美化图像输出。 有效占位符: .Name - 图像的完整名称 .RepoTags - 仓库标签数组 .StarCount - 图像的星数 .IsOfficial - 图像是否是官方的 .IsAutomated - 图像是否是自动化的

示例:--format "{{.Name}}\t{{.StarCount}}"

--limit

返回的最大结果数(默认为 25)

--no-trunc

不截断输出

--quiet-q

仅显示数字 ID

--registry

在指定的注册表中搜索图像。如果注册表不支持搜索,则返回错误。 如果没有指定注册表,Podman 将在 containers-registries.conf(5) 中的所有 unqualified-search 注册表中搜索。

--sort

基于字段对输出进行排序。字段可以是名称、星数或更新时间。默认为名称。

示例

podman search nginx

containers-registries.conf(5) 中的所有 unqualified-search 注册表中搜索术语 'nginx'。

podman search registry.fedoraproject.org/nginx

在 'registry.fedoraproject.org' 注册表中搜索术语 'nginx'。

podman search --registry registry.fedoraproject.org/ --limit 5

在 'registry.fedoraproject.org' 注册表中搜索最多 5 个结果。

podman search --filter stars=1000

containers-registries.conf(5) 中的所有 unqualified-search 注册表中搜索至少有 1000 颗星的图像。

podman search --format "{{.Name}}\t{{.StarCount}}" nginx

containers-registries.conf(5) 中的所有 unqualified-search 注册表中搜索术语 'nginx',并使用指定的格式显示图像名称和星数。

podman search --quiet registry.fedoraproject.org/nginx

在 'registry.fedoraproject.org' 注册表中搜索术语 'nginx',并仅显示匹配图像的数字 ID。

--format=format

使用 Go 模板更改输出格式。

Go 模板中有效的占位符如下:

占位符描述
.Automated如果图像是自动化的,则为 "[OK]"
.Description图像描述
.Index注册表
.Name图像名称
.Official如果图像是官方的,则为 "[OK]"
.Stars图像的星数
.Tag仓库标签

注意:仅在设置了 --list-tags 时使用 .Tag。

--help-h

打印使用说明

--limit=limit

限制返回的结果数(默认为 25)。 注意:每个注册表的结果都限制为此值。 例如,如果限制为 10 并且正在搜索两个注册表,则总结果数为 20,每个注册表 10 个(如果每个注册表至少有 10 个匹配项)。 搜索结果的顺序是 API 端点返回结果的顺序。

--list-tags

列出指定图像的仓库中可用的标签。 注意: --list-tags 要求搜索项为完全指定的图像名称。 结果包含图像名称及其标签,与图像关联的每个标签一行。

--no-trunc

不截断输出(默认为 false)。

--tls-verify

示例

搜索包含指定名称的图像,从每个定义的注册表中返回前三个图像。

podman search --limit 3 <image_name>

这将会搜索在 containers-registries.conf(5) 文件中定义的所有 unqualified-search 注册表,并返回与 <image_name> 匹配的前三个图像。

如果你想要搜索特定的注册表,你可以使用 --registry 选项:

podman search --limit 3 --registry registry.fedoraproject.org <image_name>

如果你想要查看特定图像的可用标签,你需要使用 --list-tags 选项,并指定一个完整的图像名称(包括注册表和标签):

podman search --list-tags registry.fedoraproject.org/<image_name>:<tag>

请注意,--list-tags 要求你指定一个具体的图像名称和标签,因为它是在特定的图像仓库中搜索可用的标签。

如果你想要定制输出格式,你可以使用 --format 选项:

podman search --format "{{.Name}}\t{{.Stars}}\t{{.Description}}" <image_name>

这将使用 Go 模板来格式化输出,显示图像的名称、星数和描述。你可以根据需要调整模板中的占位符。

podman search --limit 3 fedora
registry.fedoraproject.org/f29/fedora-toolbox
registry.fedoraproject.org/f30/fedora-toolbox
registry.fedoraproject.org/f31/fedora-toolbox
docker.io/library/fedora 官方 Docker 构建的 Fedora 镜像
docker.io/kasmweb/fedora-37-desktop 适用于 Kasm Workspaces 的 Fedora 37 桌面版
docker.io/kasmweb/fedora-38-desktop 适用于 Kasm Workspaces 的 Fedora 38 桌面版
quay.io/fedora/fedora
quay.io/containerdisks/fedora # Fedora 容器磁盘镜像 <img src="htt...
quay.io/fedora/fedora-minimal

上述命令 podman search --limit 3 fedora 的输出表明,Podman 在搜索名为 fedora 的镜像时,由于 --limit 3 的限制,理论上每个注册表应该只返回最多三个匹配的镜像。然而,在提供的输出中,似乎并没有严格遵循这一限制,可能的原因是 Podman 的 --limit 选项是针对每个搜索源(即每个注册表)分别限制的,而不是对总结果数进行限制。

输出结果列出了多个镜像的名称和描述,这些镜像分别来自 registry.fedoraproject.orgdocker.ioquay.io 这几个不同的注册表。每个镜像前都标注了其所在的注册表地址,以及对应的描述信息。注意,输出中似乎有些重复的行(比如两个 "NAME" 行),这可能是输出格式的问题或者复制粘贴时的错误。

注意

注意:Stars(星星数)、Official(官方)和Automated(自动化)描述符仅在Docker Hub上可用,因此默认情况下不会显示。

podman search --format "{{.Name}}\t{{.Stars}}\t{{.Official}}" alpine --limit 3
docker.io/library/alpine 7956 [OK]
docker.io/alpine/git 192
docker.io/anapsix/alpine-java 474
quay.io/libpod/alpine 0
quay.io/vqcomms/alpine-tools 0
quay.io/wire/alpine-deps 0

搜索并列出指定镜像的标签,返回每个已定义注册表中的前四个镜像。

podman search --list-tags registry.access.redhat.com/ubi8 --limit 4
NAME TAG
registry.access.redhat.com/ubi8 8.4-211
registry.access.redhat.com/ubi8 8.4-206.1626828523-source
registry.access.redhat.com/ubi8 8.4-199
registry.access.redhat.com/ubi8 8.4-211-source

注意:这仅适用于实现v2 API的注册表。如果尝试使用v1注册表,将返回错误。

文件

registries.conf (/etc/containers/registries.conf)

registries.conf 是配置文件,用于指定在补全不包含注册表或域部分的镜像名称时,应咨询哪些容器注册表。

另请参阅

podman(1), podman-login(1), podman-logout(1),

containers-registries(5)

历史

2018 年 1 月,最初由 Urvashi Mohnani编译