防止 Podman 升级停止运行容器

升级 Podman 可能会影响正在运行的容器,具体取决于升级的执行方式和底层系统配置。 Podman 被设计为无守护程序容器引擎,这意味着每个容器作为单独的进程运行,由用户或系统直接管理。升级 Podman 时,了解哪些操作可能导致容器停止以及如何最大程度地减少该过程中的停机时间非常重要。

在不中断容器的情况下执行安全的 Podman 升级

步骤一:检查 Podman 版本和正在运行的容器

在开始任何升级之前,请验证当前的 Podman 版本并列出所有正在运行的容器。这可以帮助您跟踪哪些容器可能受到影响,并让您确认所有内容都已恢复。


podman --version
podman ps
    

步骤2:查看升级文档

请参阅官方 Podman 发行说明和您的 Linux 发行版的软件包文档。某些升级,尤其是涉及主要版本更改的升级,可能需要停止容器或可能影响兼容性。查找与升级相关的任何具体说明或警告。

步骤3:使用包管理器进行升级

在大多数 Linux 发行版上,通过包管理器升级 Podman 不会自动停止运行容器,因为 Podman 不依赖于中央守护进程。使用适合您的系统的命令:

  • 对于 Fedora、CentOS 或 RHEL:sudo dnf upgrade podman.
  • 对于 Ubuntu 或 Debian:sudo apt-get upgrade podman.

这些命令将更新 Podman 二进制文件。由于正在运行的容器作为独立进程进行管理,因此它们通常会继续运行。但是,升级后执行的任何新 Podman 命令都将使用新版本。

第4步:确认升级后容器状态

升级完成后,再次检查容器的状态以确保它们仍按预期运行。


podman ps
    

第5步:如果需要,重新启动 Podman 容器

在极少数情况下,特别是在主要版本升级或容器存储后端发生更改的情况下,可能需要重新启动或迁移容器。如果您发现任何问题,请停止并启动受影响的容器:


podman stop <container_id>
podman start <container_id>
    

替代方法:升级前停止容器

一些管理员喜欢在升级 Podman 之前停止所有正在运行的容器,尤其是在生产环境中。此方法可确保升级期间没有进程使用过时的二进制文件或库。

步骤一:停止所有正在运行的容器


podman stop $(podman ps -q)
    

步骤2:使用包管理器升级 Podman

按照与上面相同的包管理器说明来升级 Podman。

步骤3:升级后再次启动容器

升级完成后,重新启动容器:


podman start $(podman ps -a -q)
    

此方法可确保所有容器都在新升级的 Podman 版本下运行,这可能是某些更新或功能所必需的。


注意事项和维护技巧

虽然 Podman 的架构通常允许容器在升级期间保持运行,但请务必检查发行说明以了解重大更改。在重大升级之前备份容器数据和配置。对于使用的系统podman system service(API套接字),升级后可能需要重新启动服务。升级后监视您的容器,以确认持续运行并及时解决任何兼容性问题。


升级 Podman 对于运行容器来说通常是安全的,但最好检查文档并制定回滚计划。谨慎的升级可帮助您避免不必要的停机并保持容器化服务平稳运行。