跳到主要内容

Podman Pod PS 命令详解

简介

podman pod ps 命令用于打印系统上 Pod 的相关信息。默认情况下,它会列出 Pod 的 ID、名称、创建时间、附加到 Pod 的容器数量、Pod 基础架构容器的容器 ID,以及 Pod 的状态。

语法

podman pod ps [选项]

输出信息

默认情况下,podman pod ps 命令会列出以下信息:

  • Pod ID:Pod 的唯一标识符。
  • Pod Name:Pod 的名称。
  • 创建时间:Pod 创建的日期和时间。
  • 容器数量:附加到 Pod 的容器数量。
  • Pod 基础架构容器 ID:Pod 内部使用的容器 ID,用于管理 Pod 的网络和其他资源。
  • Pod 状态:Pod 的当前状态,可以是以下之一:
    • Created:没有运行或停止的容器。
    • Running:至少有一个容器正在运行。
    • Stopped:至少有一个容器已停止,并且没有容器正在运行。
    • Exited:Pod 中的所有容器都已停止。
    • Dead:获取状态时发生错误。

选项

选项说明
--help, -h打印使用说明
--latest, -l显示最新创建的 pod(包括所有状态)(此选项不适用于远程 Podman 客户端,包括 Mac 和 Windows(除 WSL2 外的)机器)
--namespace, --ns显示 pod 的命名空间信息
--no-trunc不截断输出(默认为 false
--noheading不打印输出标题
--quiet, -q仅打印 pod 的数字 ID
--sort根据创建时间、ID、名称、状态或容器数量排序
默认:created默认按创建时间排序

--ctr-ids

使用这个选项,可以在输出中显示每个 Pod 中的容器 ID。

--ctr-names

使用这个选项,可以在输出中显示每个 Pod 中的容器名称。

--ctr-status

使用这个选项,可以在输出中显示每个 Pod 中的容器状态。

示例

示例 1:列出所有 Pod 的基本信息

podman pod ps

示例 2:列出所有 Pod 的基本信息,包括容器 ID

podman pod ps --ctr-ids

示例 3:列出所有 Pod 的基本信息,包括容器名称和状态

podman pod ps --ctr-names --ctr-status

注意事项

  • 使用 podman pod ps 命令时,可以组合使用不同的选项来获取所需的详细信息。
  • Podman 的输出格式可能会根据版本或配置有所不同,但基本的 Pod 信息和状态应该是一致的。

通过 podman pod ps 命令,你可以方便地查看系统上 Pod 的状态和相关信息,以便进行进一步的管理和调试。

--filter, -f=filter

提供过滤值。

filter 参数的格式为 key=value。如果需要多个过滤器,则通过传递多个选项来实现:--filter foo=bar --filter bif=baz

支持的过滤器:

过滤器描述
ctr-ids根据 Pod 内的容器 ID 进行过滤。(默认是前缀匹配;接受正则表达式)
ctr-names根据 Pod 内的容器名称进行过滤。
ctr-number根据 Pod 中的容器数量进行过滤。
ctr-status根据 Pod 内的容器状态进行过滤。
id根据 Pod ID 进行过滤。(默认是前缀匹配;接受正则表达式)
label根据具有(或不具有,如果使用了 label!=[...])指定标签的容器进行过滤。
name根据 Pod 名称进行过滤。
network根据网络名称或网络的完整 ID 进行过滤。
status根据 Pod 状态进行过滤。
until根据在给定时间戳之前创建的 Pod 进行过滤。这个选项通常用于过滤出在特定时间之前创建的 Pod。

使用 --filter 选项时,你可以指定一个或多个过滤器,以缩小 podman pod ps 命令的输出范围,只显示符合特定条件的 Pod。这对于在拥有大量 Pod 的系统中快速查找特定 Pod 非常有用。 确实,这些过滤器具有更具体的格式和接受值。以下是对您提到的过滤器的详细解释:

ctr-ids, ctr-names, id, name 过滤器

这些过滤器接受正则表达式(regex)格式,允许用户根据复杂的模式匹配来过滤 Pod。例如,如果你想找到所有以 "mypod" 开头的 Pod,你可以使用正则表达式 "mypod.*"。

ctr-status 过滤器

过滤器值描述
created容器已创建但尚未启动
running容器正在运行
paused容器已暂停
stopped容器已停止
exited容器运行完毕并已退出
unknown容器状态未知

label 过滤器

过滤器格式描述
label=<key>过滤出具有指定键的标签的容器所在的 Pod
label=<key>=<value>过滤出具有指定键和值的标签的容器所在的 Pod
label!=<key>过滤出没有指定键的标签的容器所在的 Pod
label!=<key>=<value>过滤出没有指定键和值的标签的容器所在的 Pod

until 过滤器

时间戳格式描述
Unix 时间戳自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数
日期格式化时间戳符合 RFC 3339 格式的日期字符串,例如 "2023-04-01T12:34:56Z"
Go 持续时间字符串表示相对于机器当前时间的相对时间的字符串,例如 "10m" 表示 10 分钟前,"1h30m" 表示 1 小时 30 分钟前

status 过滤器

过滤器值描述
stoppedPod 中的所有容器都已停止
runningPod 中至少有一个容器正在运行
pausedPod 中至少有一个容器已暂停
exitedPod 中的所有容器都已运行完毕并已退出
deadPod 中的所有容器都已停止,并且可能遇到了错误
createdPod 已创建但尚未启动任何容器
degradedPod 中的一些容器可能运行不正常或缺失

--format 参数允许你定制输出的内容和格式。你可以使用 JSON 格式或 Go 模板来美化输出容器的信息,以满足你的具体需求。通过精心构造查询和选择合适的输出格式,你可以从 podman pod ps 命令中获取清晰、有用的 Pod 和容器信息。

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

占位符描述
.CgroupPod 的 Cgroup 路径
.ContainerIdsPod 中容器的 ID 列表,以逗号分隔
.ContainerNamesPod 中容器的名称列表,以逗号分隔
.ContainerStatusesPod 中容器的状态列表,以逗号分隔
.CreatedPod 的创建时间
.IDPod 的容器 ID(通常指的是基础设施容器 ID)
.InfraIDPod 的基础设施容器的 ID
.Label *string*Pod 的指定标签的值
.LabelsPod 的所有标签
.NamePod 的名称
.Networks与基础设施容器连接的所有网络的信息
.NumberOfContainers附加到 Pod 的容器数量
.RestartsPod 中容器的总重启次数
.StatusPod 的状态

使用这些占位符,你可以创建自定义的 Go 模板字符串,以生成满足你需求的输出。例如,如果你只想输出 Pod 的名称和状态,你可以使用如下模板:

podman pod ps --format '{{.Name}}\t{{.Status}}'

这个命令会输出 Pod 的名称和状态,它们之间用制表符(\t)分隔。你可以根据自己的需要调整模板字符串,以满足特定的输出格式要求。如果你想要更复杂的输出,你可以查阅 Go 模板的文档来了解更多关于模板语法的信息。

此外,如果你选择 JSON 格式输出,你可以直接使用 --format json 选项,这将输出一个结构化的 JSON 对象,其中包含 Pod 和其容器的详细信息。

*示例

列出所有正在运行的 pod。

$ podman pod ps
POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
00dfd6fa02c0 jolly_goldstine Running 31 hours ago ba465ab0a3a4 1
f4df8692e116 nifty_torvalds Created 10 minutes ago 331693bff40a 2

列出所有正在运行的 pod 以及每个 pod 中的容器名称。

$ podman pod ps --ctr-names
POD ID NAME STATUS CREATED INFRA ID NAMES
00dfd6fa02c0 jolly_goldstine Running 31 hours ago ba465ab0a3a4 loving_archimedes
f4df8692e116 nifty_torvalds Created 10 minutes ago 331693bff40a thirsty_hawking,wizardly_golick

列出所有正在运行的 pod 以及状态、名称和 ID,包括容器状态和名称。

$ podman pod ps --ctr-status --ctr-names --ctr-ids
POD ID NAME STATUS CREATED INFRA ID IDS NAMES STATUS
00dfd6fa02c0 jolly_goldstine Running 31 hours ago ba465ab0a3a4 ba465ab0a3a4 loving_archimedes running
f4df8692e116 nifty_torvalds Created 10 minutes ago 331693bff40a 331693bff40a,8e428daeb89e thirsty_hawking,wizardly_golick configured,configured

列出所有正在运行的 pod,并以特定格式打印 ID、容器名称和 cgroups。

$ podman pod ps --format "{{.ID}}  {{.ContainerNames}}  {{.Cgroup}}"
00dfd6fa02c0 loving_archimedes /libpod_parent
f4df8692e116 thirsty_hawking,wizardly_golick /libpod_parent

列出所有正在运行的包含两个容器的 pod,并按 pod ID 排序。

$ podman pod ps --sort id --filter ctr-number=2
POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
f4df8692e116 nifty_torvalds Created 10 minutes ago 331693bff40a 2

**示例

列出所有正在运行的 pod 以及它们包含的容器 ID。

$ podman pod ps --ctr-ids
POD ID NAME STATUS CREATED INFRA ID IDS
00dfd6fa02c0 jolly_goldstine Running 31 hours ago ba465ab0a3a4 ba465ab0a3a4
f4df8692e116 nifty_torvalds Created 10 minutes ago 331693bff40a 331693bff40a,8e428daeb89e

列出所有正在运行的 pod 以及容器 ID,且不截断 ID。

$ podman pod ps --no-trunc --ctr-ids
POD ID NAME STATUS CREATED INFRA ID IDS
00dfd6fa02c0a2daaedfdf8fcecd06f22ad114d46d167d71777224735f701866 jolly_goldstine Running 31 hours ago ba465ab0a3a4e15e3539a1e79c32d1213a02b0989371e274f98e0f1ae9de7050 ba465ab0a3a4e15e3539a1e79c32d1213a02b0989371e274f98e0f1ae9de7050
f4df8692e116a3e6d1d62572644ed36ca475d933808cc3c93435c45aa139314b nifty_torvalds Created 10 minutes ago 331693bff40a926b6d52b184e116afd15497610c378d5d4c42945dd6e33b75b0 331693bff40a926b6d52b184e116afd15497610c378d5d4c42945dd6e33b75b0,8e428daeb89e69b71e7916a13accfb87d122889442b5c05c2d99cf94a3230e9d

列出所有正在运行的 pod 以及它们包含的容器名称。

$ podman pod ps --ctr-names
POD ID NAME STATUS CREATED INFRA ID NAMES
00dfd6fa02c0 jolly_goldstine Running 31 hours ago ba465ab0a3a4 loving_archimedes
f4df8692e116 nifty_torvalds Created 10 minutes ago 331693bff40a thirsty_hawking,wizardly_golick

pod ps

打印出 pod 列表。

另请参阅

podman(1), podman-pod(1)

历史

2018年7月,最初由 Peter Hunt 整理。