名称

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 支持以下文件类型:

每个文件都会被映射到一个对应的 .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)

作者

Podman 团队 https://podman.org.cn