在 Podman 中,Pod 和容器一样,也支持启动、停止和重启。注意,Pod 的启动/停止/重启将会导致 Pod 下面所有容器都启动/停止/重启。
在学习 Pod 启动、停止和重启命令前,需明确 Pod 状态与操作的对应关系,避免误操作导致数据丢失或服务中断:
Created(已创建):Pod 已经被创建,但其中的容器尚未启动或正在初始化。这是 Pod 创建后的初始状态。使用 podman pod create 命令创建了 Pod,但还未启动;或 Pod 刚刚被创建,容器正在配置中。
Running(运行中):Pod 中的所有容器都处于正常运行状态,Pod 功能正常。
Paused(已暂停):Pod 中的所有容器都被暂停,进程停止运行,但内存状态保留,可恢复。执行了 podman pod pause 命令,或系统资源不足时被暂停。
Exited(已退出):Pod 中的所有容器都已停止运行并退出。可能是正常停止,也可能是异常退出。执行了 podman pod stop 命令;容器进程运行结束;容器崩溃或异常退出。
Degraded(降级):Pod 中至少有一个容器异常(如崩溃、退出或无法启动),但其他容器仍在运行,Pod 功能部分受损。Pod 内某个容器启动失败、进程崩溃,或依赖的资源不可用。
下面表格列出了 Pod 各个状态对应的容器状态:
Pod 状态 | 描述 | 对应容器状态 |
Running | Pod 内至少有一个容器处于运行状态 | 至少一个容器为 Up |
Exited | Pod 内所有容器都已退出(包括正常停止或异常退出) | 所有容器为 Exited |
Created | Pod 已创建但容器尚未启动 | 容器为 Created |
Paused | Pod 内所有容器都已暂停 | 所有容器为 Paused |
Degraded | Pod 内部分容器运行、部分容器退出(混合状态) | 容器状态不一致 |
注意:停止/重启 Pod 不会删除 Pod 本身及关联的数据卷,仅改变容器运行状态。强制终止适用于无响应的 Pod。
podman pod start 命令用于启动一个或多个处于 Exited、Created 或 Paused 状态的 Pod,以及其中的所有容器。
Pod 启动语法如下:
podman pod start [选项] POD [POD...]
常用选项:
-a, --all 启动所有处于停止状态的 Pod
--pod-id-file 从文件读取 Pod ID 进行启动
点击查看 podman pod start 命令手册。
(1)启动单个 Pod
# 通过名称启动 # 查看 Pod 列表 C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Degraded About an hour ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 47 hours ago a00c13fb2b32 3 # 根据名称启动Pod,启动名为 my-pod 的 Pod C:\Users\Administrator> podman pod start my-pod my-pod # 查看 Pod 列表,名为 my-pod 的 Pod 状态为 Running C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Running About an hour ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 47 hours ago a00c13fb2b32 3 # 通过 ID 启动 C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Exited About an hour ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 47 hours ago a00c13fb2b32 3 # 根据 Pod 的 Id(e58becbb090f) 启动 C:\Users\Administrator> podman pod start e58becbb090f my-pod C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Running About an hour ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 47 hours ago a00c13fb2b32 3
(2)启动多个 Pod
# 启动多个指定的 Pod C:\Users\Administrator> podman pod start my-pod web-redis-pod my-pod web-redis-pod # 启动所有停止的 Pod C:\Users\Administrator> podman pod start -a web-redis-pod my-pod # 根据ID启动Pod [user@CDLPF2YBXYD ~]$ podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Exited About an hour ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 47 hours ago a00c13fb2b32 3 # 启动所有状态为 status=exited 的 Pod [user@CDLPF2YBXYD ~]$ podman pod start $(podman pod ls --filter status=exited -q) my-pod # 看见名为 my-pod 的状态为 Runing [user@CDLPF2YBXYD ~]$ podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Running About an hour ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 47 hours ago a00c13fb2b32 3
停止一个或多个运行中的 Pod,本质是向 Pod 内所有容器发送 SIGTERM 信号(优雅终止),等待容器处理完当前任务后退出。若容器未在指定时间内退出,可自动发送 SIGKILL 信号强制终止。
Pod 停止操作命令语法如下:
podman pod stop [选项] <Pod名称/ID/部分ID>...
常用选项:
-a, --all 停止所有运行中的 Pod(慎用!避免影响无关服务)
-t, --time <秒数> 优雅停止等待时间(默认 10 秒),超时后强制终止(相当于 docker stop -t)
点击查看 podman pod stop 命令手册。
(1)停止单个指定 Pod(优雅终止)
# 先查看运行中的 Pod(获取名称/ID) C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS f5098ffc83c4 my-pod Created 24 hours ago eb505ad7a250 2 0c9858859aa8 web-redis-pod Running 46 hours ago a00c13fb2b32 3 # 停止名为 web-redis-pod 的 Pod(默认等待 10 秒) C:\Users\Administrator> podman pod stop web-redis-pod web-redis-pod # 验证停止结果(STATUS 变为 Exited) C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS f5098ffc83c4 my-pod Created 24 hours ago eb505ad7a250 2 0c9858859aa8 web-redis-pod Exited 46 hours ago a00c13fb2b32 3
(2)停止多个 Pod(按 ID / 名称批量操作)
# 停止多个 Pod(用空格分隔 ID/名称) # 查看 Pod 状态 C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Running 4 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 46 hours ago a00c13fb2b32 3 # 停止名为 my-pod 和 web-redis-pod 的 Pod C:\Users\Administrator> podman pod stop my-pod web-redis-pod my-pod web-redis-pod # 查看状态, my-pod 和 web-redis-pod 的 Pod 状态变为 Exited C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Exited 5 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Exited 46 hours ago a00c13fb2b32 3
(3)使用 -a 选项,停止所有 pod
# 停止所有运行中的 Pod(谨慎使用!) # 查看 Pod 状态 C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Running 8 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 46 hours ago a00c13fb2b32 3 # 停止所有 Pod C:\Users\Administrator> podman pod stop -a web-redis-pod my-pod # 查看状态,Pod 状态变为 Exited C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Exited 8 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Exited 46 hours ago a00c13fb2b32 3
(4)自定义优雅停止时间
# 查看 Pod 状态 C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Running 9 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 46 hours ago a00c13fb2b32 3 # 给 Pod 30 秒时间处理完任务后停止(适用于数据库、消息队列等需要关闭连接的服务) C:\Users\Administrator> podman pod stop -t 30 web-redis-pod web-redis-pod # 查看 Pod 状态,web-redis-pod 状态为 Exited C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Running 9 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Exited 46 hours ago a00c13fb2b32 3
重启一个或多个 Pod(无论当前状态是 running 还是 exited):
若 Pod 已停止 / 退出:直接启动 Pod 内所有容器。
若 Pod 正在运行:先停止 Pod(优雅终止),再重新启动所有容器。
Pod 重启语法如下:
podman pod restart [选项] <Pod名称/ID/部分ID>...
常用选项:
-a, --all 重启所有 Pod(包括停止、运行中、退出状态的 Pod)
点击查看 podman pod restart 命令手册。
(1)重启单个运行中的 Pod(修复配置或服务异常)
# 重启名为 my-app-pod 的 Pod(先停止再启动) podman pod restart my-app-pod
(2)重启多个停止的 Pod
# 重启多个已停止的 Pod(按 ID 批量操作) podman pod restart abc123 def456 # 重启所有 Pod(慎用!) podman pod restart -a
暂停指定 Pod 内的所有容器进程,使其进入暂停状态。暂停的 Pod 不会占用 CPU 资源,但仍会保留内存和网络端口等资源,容器的文件系统状态也会被完整保留。
Pod 暂停语法如下:
podman pod pause [选项] POD [POD...]
常用选项:
-a, --all 暂停所有运行中的 Pod
点击查看 podman pod pause 命令手册。
(1)暂停单个 Pod
# 查看当前运行的 Pod C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Running 29 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 47 hours ago a00c13fb2b32 3 # 暂停名为 my-pod 的 Pod C:\Users\Administrator> podman pod pause my-pod e58becbb090fe2a4167a8ed2f0097307ca060e9e74e07f6849a8bcd3c45441b9 # 验证 Pod 状态(STATUS 会显示为 "paused") C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Paused 30 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 47 hours ago a00c13fb2b32 3
(2)暂停多个 Pod
# 暂停多个指定的 Pod(通过 ID 或名称) C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Running 31 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 47 hours ago a00c13fb2b32 3 # 暂停名为 my-pod 和 web-redis-pod 的 Pod C:\Users\Administrator> podman pod pause my-pod web-redis-pod e58becbb090fe2a4167a8ed2f0097307ca060e9e74e07f6849a8bcd3c45441b9 0c9858859aa8e97fefa2b4839cc1c0f4c589ed40aca1840cbfd66b8f49eae31e # 查看 my-pod 和 web-redis-pod 的 Pod 状态为 Paused C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Paused 31 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Paused 47 hours ago a00c13fb2b32 3 # 暂停所有运行中的 Pod # 列出 Pod C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Running 32 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 47 hours ago a00c13fb2b32 3 # 暂停所有运行中的 Pod C:\Users\Administrator> podman pod pause -a 0c9858859aa8e97fefa2b4839cc1c0f4c589ed40aca1840cbfd66b8f49eae31e e58becbb090fe2a4167a8ed2f0097307ca060e9e74e07f6849a8bcd3c45441b9 # 所有 Pod 状态均为 Paused C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Paused 32 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Paused 47 hours ago a00c13fb2b32 3
恢复被暂停的 Pod 内所有容器的运行,使其从暂停状态回到运行状态。恢复后的 Pod 会继续使用之前的资源,容器内的进程也会从暂停点继续执行。
Pod 恢复的语法如下:
podman pod unpause [选项] POD [POD...]
常用选项:
-a, --all 恢复所有被暂停的 Pod
点击查看 podman pod unpause 命令手册。
(1)恢复单个暂停的 Pod
# 查看 Pod 列表 C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Paused 41 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Paused 47 hours ago a00c13fb2b32 3 # 恢复名为 my-pod 的 Pod C:\Users\Administrator> podman pod unpause my-pod e58becbb090fe2a4167a8ed2f0097307ca060e9e74e07f6849a8bcd3c45441b9 # 验证 Pod 状态(STATUS 会恢复为 "running") C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Running 41 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Paused 47 hours ago a00c13fb2b32 3
(2) 恢复所有暂停的 Pod
# 查看 pod 列表 C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Paused 44 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Paused 47 hours ago a00c13fb2b32 3 # 恢复所有被暂停的 Pod C:\Users\Administrator> podman pod unpause -a 0c9858859aa8e97fefa2b4839cc1c0f4c589ed40aca1840cbfd66b8f49eae31e e58becbb090fe2a4167a8ed2f0097307ca060e9e74e07f6849a8bcd3c45441b9 # 查看恢复后的 Pod C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Running 44 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 47 hours ago a00c13fb2b32 3
下面将介绍 Podman 中“暂停/恢复”与“启动/停止”的区别:
特性 | pause/unpause | stop/start |
资源占用 | 保留内存、网络等资源,仅释放 CPU | 释放几乎所有资源 |
启动速度 | 极快(毫秒级) | 较慢(需要重新初始化容器) |
进程状态 | 进程被冻结,恢复后继续执行 | 进程完全终止,启动后重新开始 |
适用场景 | 临时暂停、资源调配、故障排查 | 服务更新、配置修改、长期停止 |
注意:
podman pod pause 临时挂起 Pod 内所有容器,保留资源和状态,适合短时间暂停服务。
podman pod unpause 恢复被暂停的 Pod,使其快速回到运行状态。
暂停 / 恢复操作比停止 / 启动更轻量、更快,适用于临时资源管理和故障排查场景。
直接向 Pod 内所有容器发送指定信号(默认 SIGKILL),强制终止 Pod 运行,适用于:
podman pod stop 无法停止的无响应 Pod。
需要紧急终止 Pod 以避免资源占用或数据损坏。
Pod 强制终止语法如下:
podman pod kill [选项] <Pod名称/ID>...
常用选项:
-s, --signal <信号> 指定发送的信号(如 SIGINT、SIGTERM、SIGKILL,默认 SIGKILL)
-a, --all 强制终止所有 Pod(极其危险!仅在紧急故障排查时使用)
点击查看 podman pod kill 命令手册。
(1)强制终止无响应的 Pod(默认发送 SIGKILL)
# 查看 Pod 列表 C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Running 50 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 47 hours ago a00c13fb2b32 3 # 强制终止名为 my-pod 的 Pod(默认发送 SIGKILL) C:\Users\Administrator> podman pod kill my-pod e58becbb090fe2a4167a8ed2f0097307ca060e9e74e07f6849a8bcd3c45441b9 # 查看 Pod 列表(名为 my-pod 的 Pod 状态为 Exited) C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Exited 50 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 47 hours ago a00c13fb2b32 3
(2)发送 SIGINT 信号(相当于 Ctrl+C)强制终止 Pod
# 查看 Pod 列表 C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Running 52 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 47 hours ago a00c13fb2b32 3 # 发送 SIGINT 信号(相当于 Ctrl+C)强制终止 Pod C:\Users\Administrator> podman pod kill -s SIGINT my-pod e58becbb090fe2a4167a8ed2f0097307ca060e9e74e07f6849a8bcd3c45441b9 # 查看 Pod 列表(名为 my-pod 的 Pod 状态为 Degraded) C:\Users\Administrator> podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e58becbb090f my-pod Degraded 52 minutes ago bc7cf1904863 2 0c9858859aa8 web-redis-pod Running 47 hours ago a00c13fb2b32 3
下面是停止、重启和强制终止使用场景、数据安全性等:
操作 | 适用场景 | 数据安全性 | 底层信号 |
podman pod stop | 正常停止运行中的 Pod(优雅终止) | 高(等待任务完成) | 先 SIGTERM,超时 SIGKILL |
podman pod restart | 重启 Pod(修复异常、应用配置) | 中(依赖容器重启策略) | 先 SIGTERM,再启动 |
podman pod kill | 无响应 Pod 强制终止(紧急情况) | 低(可能丢失未持久化数据) | 直接 SIGKILL(默认) |
停止 / 重启 Pod 时,数据卷中的数据不会丢失,但容器内未持久化的数据(如 /tmp 目录、内存数据)会丢失;
数据库、消息队列等有状态服务,重启前建议先备份数据,或通过 -t 选项延长停止等待时间,避免连接中断导致数据损坏。