名称¶
podman-systemd.unit - Podman Quadlet 与 systemd 集成的高层概述
描述¶
Quadlet 是一个 systemd 单元生成器,它通过使用专门的 systemd 单元文件来定义 Podman 资源,从而实现声明式容器管理。它提供了 Podman 和 systemd 之间的接口,允许用户通过原生的 systemd 服务单元来管理容器、pod、卷、镜像等。
Quadlet 会解析位于众所周知目录中的 .container、.pod、.volume、.network、.image、.build 和 .kube 文件,并将它们转换为相应的 systemd .service 单元。然后,这些单元用于在启动时或通过显式的 systemctl 命令来创建和管理容器资源。
用途¶
Quadlet 的目标是弥合容器生命周期管理和系统初始化之间的差距。它让您能够以声明方式定义容器基础设施,并利用 systemd 的特性,例如依赖排序、重启策略、启动时激活、日志记录和 drop-in 配置。
它消除了编写复杂的 ExecStart= 行或手动管理自定义 systemd 服务的需要。
优点¶
声明式且人类可读的单元定义
与原生 systemd 特性的无缝集成
一致的命名和依赖管理
支持高级 Podman 功能(pod、kube、镜像构建)
rootless 和 rootful 兼容性
支持所有单元类型的 drop-in 覆盖
与 SYSTEMD 集成¶
在启动时,podman-system-generator 会从预定义目录中读取 Quadlet 单元文件,并将它们转换为位于 /run/systemd/generator/ 下的 .service 文件。这些生成的服务被视为原生的 systemd 单元,可以使用标准工具(如 systemctl)进行启用、启动和检查。
systemctl enable my-container.service
systemctl start my-container.service
journalctl -u my-container.service
根据所使用的搜索路径,Quadlet 可以干净地与 rootless 和 rootful 的 Podman 环境集成。
文件类型¶
Quadlet 支持以下文件类型:
.container— 定义和管理单个容器。请参阅 podman-container.unit(5)。.pod— 创建一个可供容器加入的 Podman pod。请参阅 podman-pod.unit(5)。.volume— 确保存在一个已命名的 Podman 卷。请参阅 podman-volume.unit(5)。.network— 为容器和 pod 创建一个 Podman 网络。请参阅 podman-network.unit(5)。.image— 拉取并缓存一个容器镜像。请参阅 podman-image.unit(5)。.build— 根据 Containerfile 构建一个容器镜像。请参阅 podman-build.unit(5)。.kube— 使用 podman-kube.unit(5) 从 Kubernetes YAML 部署容器。
每个文件都会被映射到一个对应的 .service 单元,其命名模式可预测,通常是在单元基础名称后附加 -<类型>.service。
文件路径¶
Quadlet 文件应根据 rootless 或 rootful 执行方式存储在特定目录中。
Rootful(有根模式)¶
/run/containers/systemd//etc/containers/systemd//usr/share/containers/systemd/
Rootless(无根模式)¶
$XDG_RUNTIME_DIR/containers/systemd/$XDG_CONFIG_HOME/containers/systemd/或~/.config/containers/systemd//etc/containers/systemd/users/$(UID)/etc/containers/systemd/users/
QUADLET 区段 [Quadlet]¶
一些 quadlet 特定的配置在不同的单元类型之间是共享的。这些设置可以在 [Quadlet] 区段中进行配置。
[Quadlet] 的有效选项如下所示:
[Quadlet] 选项 |
描述 |
|---|---|
DefaultDependencies=false |
禁用对该单元的隐式网络依赖 |
DefaultDependencies=¶
将 Quadlet 的默认网络依赖项添加到该单元(默认为 true)。
当设置为 false 时,Quadlet 将**不会**向生成的单元添加对 network-online.target/podman-user-wait-network-online.service 的依赖(After=, Wants=)。
请注意,此选项在 [Quadlet] 区段中设置。systemd 的 [Unit] 区段中有一个同名但含义不同的选项。
另请参阅¶
另请参阅:podman-container.unit(5)、podman-pod.unit(5)、podman-volume.unit(5)、podman-network.unit(5)、podman-image.unit(5)、podman-build.unit(5)、podman-kube.unit(5)、systemd.unit(5)