Podman Quadlets 与 Podman Desktop
容器通常部署在 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 容器
# 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。要更新列表,请单击刷新。


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


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


- 单击生成以完成 Quadlet。


- 可选:编辑 Quadlet 配置详细信息。
- 单击加载到机器。


恭喜 🎉 您创建了第一个 Quadlet!
编辑 Quadlets🖊
单击 Quadlet 状态图标以查看其详细信息页面,该页面有三个选项卡
- 生成:查看 Podman 生成的 systemd 单元(只读)。
- 源:直接编辑 Quadlet 文件。
- 日志:使用 journalctl 监控服务的日志。
您可以更改 Quadlet 的源文件并根据需要应用更新。


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


结论
Podman Quadlets 提供了一种强大的方式,通过 systemd 声明式地管理容器,弥合了轻量级容器管理和 Kubernetes 等完整编排工具之间的差距。
借助 Podman Desktop 中的 Podman Quadlet 扩展,用户可以获得一个方便的界面来可视化管理 Quadlets,从而降低复杂性并节省时间。
立即尝试,简化您的容器工作流程!