跳转到主内容

Podman Quadlets 与 Podman Desktop

·5 分钟阅读
Axel Stefanini
软件工程师

banner

容器通常部署在 Kubernetes 集群中。然而,对于单节点服务器或开发过程中的小规模用例,Kubernetes 可能有些大材小用。

对于运行包含多个交互容器的自治应用程序,有什么更轻量级的解决方案呢?

在这篇博客中,我们将深入探讨 Quadlet 是什么、它们的优势,以及如何在 Podman Desktop 中使用它们。

什么是 Quadlets?

Podman Quadlets 允许您使用 systemd1 以声明方式管理容器。从版本 4.4 开始,Podman 可以通过 systemd 创建、启动和管理容器(包括拉取镜像、创建卷和管理 Pod)。

Quadlets 是简化的配置文件——通过其特定的扩展名(例如 *.container*.pod*.image)识别,这些文件在启动时或使用 systemctl daemon-reload 命令重新加载守护程序时进行处理。

Quadlets 生成等效的 systemd 单元文件,从而简化了容器管理过程。

为什么要使用 Quadlets?

  • 声明式配置:与 Compose 或 Kubernetes 清单类似,Quadlets 允许您声明要运行的内容,从而简化了工作负载设置。
  • 紧密的系统集成:Quadlets 符合 Podman 与 Linux 无缝集成的理念,利用 systemd 的进程管理能力。
  • 易于自动化:Quadlets 可以轻松配置容器在启动时启动、失败时重新启动等等。

示例:Nginx 的 Quadlet 文件

以下是 nginx.container Quadlet 文件的示例,该文件在启动时启动一个 nginx 容器

~/.config/containers/systemd/nginx.container
# nginx.container
[Container]
ContainerName=nginx
Image=nginx
PublishPort=80:8080

[Service]
Restart=always

此配置确保容器在停止时自动重新启动,并公开端口 8080。

在 Podman Desktop 中使用 Podman Quadlet 扩展

由于虚拟化环境(例如 WSL 或 Hyper-V),直接在非 Linux 平台上管理 Quadlets 可能具有挑战性。幸运的是,Podman Desktop 扩展 Podman Quadlet 简化了此过程,使您能够以可视化方式列出、生成和编辑 Quadlets。

扩展的主要功能

  • 与 Podlet 集成:从现有 Podman 对象生成 Quadlets2
  • Quadlet 管理 UI:提供专用界面来列出、编辑、删除、启动和停止 Quadlets。
  • 日志查看器:使用 journalctl 获取和显示 systemd 日志以进行故障排除。

安装

如果您已经安装了最新版本的 Podman Desktop,您可以点击此处安装 Podman Quadlet 扩展

或者,导航到 Podman Desktop 中的“扩展”页面进行安装。

列出 Quadlets📋

在 Podman Quadlet 页面上,您可以查看所有 Podman 机器上可用的 Quadlets。要更新列表,请单击刷新

Quadlets ListQuadlets List

在 Podman Desktop 中,您可以看到为 Quadlet 管理的容器使用了专用图标。

Container Quadlet IconContainer Quadlet Icon

生成容器 Quadlet🔨

  1. 使用 Podman 启动容器
podman run --name nginx-demo -d -p 80:8080 nginx
  1. 在 Podman Desktop 中,在“容器”页面上找到您的容器。
  2. 单击溢出菜单图标并选择生成 Quadlet
Container actionsContainer actions

  1. 单击生成以完成 Quadlet。
Quadlet Generate FormQuadlet Generate Form

  1. 可选:编辑 Quadlet 配置详细信息。
  2. 单击加载到机器
Quadlet Generate FormQuadlet Generate Form

恭喜 🎉 您创建了第一个 Quadlet!

编辑 Quadlets🖊

单击 Quadlet 状态图标以查看其详细信息页面,该页面有三个选项卡

  • 生成:查看 Podman 生成的 systemd 单元(只读)。
  • :直接编辑 Quadlet 文件。
  • 日志:使用 journalctl 监控服务的日志。

您可以更改 Quadlet 的源文件并根据需要应用更新。

Quadlet Details SourceQuadlet Details Source

查看 Quadlet 日志📜

由于 Quadlet 对应的资源由 systemd 管理,我们可以使用 journalctl 访问相应单元的日志。

Quadlet Details LogsQuadlet Details Logs

结论

Podman Quadlets 提供了一种强大的方式,通过 systemd 声明式地管理容器,弥合了轻量级容器管理和 Kubernetes 等完整编排工具之间的差距。

借助 Podman Desktop 中的 Podman Quadlet 扩展,用户可以获得一个方便的界面来可视化管理 Quadlets,从而降低复杂性并节省时间。

立即尝试,简化您的容器工作流程!

脚注

  1. https://docs.podman.org.cn/en/latest/markdown/podman-systemd.unit.5.html

  2. https://github.com/containers/podlet