NAME

Podman-system.单位-使用Podman Quadlet的系统单位

SYNOPSIS

name .容器, name .音量, name .网络, name .kube name .图像, name .pod

Podman Rootful单元搜索路径

根用户的Quadlet文件可以放在以下两个目录中:

  • /ETC/CONTAINS/SYSTEM/

  • /usr/Share/Containers/SYSTEM/

Podman无根单元搜索路径

非超级用户的Quadlet文件可以放在以下目录中

  • $XDG_CONFIG_HOME/CONTAINS/SYSTEM D/或~/.CONFIG/CONTAINS/SYSTEM D/

  • /ETC/CONTAINS/SYSTEM/USERS/$(UID)

  • /ETC/CONTAINS/SYSTEM/USERS/

DESCRIPTION

Podman支持通过使用 [systemd generator] (https://www.freedesktop.org/software/systemd/man/systemd.generator.html).这些文件在引导过程中读取(以及何时读取 systemctl daemon-reload 正在运行),并生成相应的常规系统服务单元文件。同时支持系统和用户SYSTEM D单元。支持标准系统单元文件中的所有选项和表格。例如,在 [Service] 表和 [Install] 表直接传递给system d,并由其处理。有关更多信息,请参见系统.单元(5)手册页。

Podman生成器读取上面的搜索路径并读取扩展名为 .container .volume.network.pod.kube ,并为每个文件生成一个名称类似的 .service 文件。请注意,现有供应商服务(即 /usr/ 如果它们具有相同的名称,则会被替换。生成的单元文件可以用来启动和管理 systemctl 就像任何其他的系统服务一样。 systemctl {--user} list-unit-files 列出系统上的现有设备文件。

Podman文件使用与相同的格式 [regular systemd unit files] (https://www.freedesktop.org/software/systemd/man/systemd.syntax.html).每种文件类型都有一个定制部分(例如, [Container] ),所有其他部分都原封不动地传递,允许使用任何正常的系统配置选项,如依赖项或cgroup限制。

源文件还支持在相同的 [way systemd does] (https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html).对于给定源文件(例如 foo.container ),对应的 .d 目录(在本例中 foo.container.d )将被扫描以查找具有 .conf 按字母顺序合并到基本文件中的扩展名。这些插件文件的格式与基本文件相同。这对于更改或添加机组的配置设置非常有用,而不必修改机组文件。

对于无根容器,当管理员将Quadlet文件放在/etc/tainers/systemd/USERS目录中时,所有用户的会话都会在登录会话开始时执行该Quadlet。如果管理员将一个Quadlet文件放在/etc/tainers/systemd/user/${uid}/目录中,则在启动登录会话时,只有具有匹配UID的用户才会执行该Quadlet。对于放置在/etc/tainers/systemd/user/${uid}/内的子目录中的设备文件以及其他用户设备搜索路径,Quadlet将递归地搜索并运行这些子目录中的设备文件。

注意:当Quadlet启动时,Podman通常会多拉一个容器图像,这可能需要相当长的时间。系统默认服务启动时间为90秒,否则服务将失败。预拉取映像或延长服务的system d超时时间 TimeoutStartSec 服务选项可以解决问题。

将以下代码片段添加到一个Quadlet文件中会将系统超时时间延长到15分钟。

[Service]
TimeoutStartSec=900

Quadlet需要使用cgroup v2,使用 podman info --format {{.Host.CgroupsVersion}} 来检查系统。

服务类型

默认情况下, Type 中的字段 Service 不需要设置Quadlet文件的部分。Quadlet会将其设置为 notify.container.kube 文件, forking.pod 文件,以及 oneshot.volume.network.image 档案。

然而, Type 可以显式设置为 oneshot.container.kube 在没有容器运行一次的情况下创建文件 podman 出口。

在设置时 Type=oneshot ,建议同时设置 RemainAfterExit=yes 以防止服务状态变为 inactive (dead)

这类情况的示例:

  • .container file with an image that exits after their entrypoint has finished ``

  • .kube 指向未定义任何容器的Kubernetes YAML文件的文件。例如,仅限PVC

启用单位文件

由Podman创建的服务被system d认为是暂时的,这意味着它们不具有与常规单元相同的持久性规则。特别是,不可能为了让它们在下一次引导时自动启用而“系统启用”它们。

为了补偿这一点,生成器手动应用 [Install] 部分的容器定义单元文件在生成期间,以相同的方式 systemctl enable 在以后运行时执行此操作。

例如,要在引导时启动容器,请将类似以下内容添加到文件:

[Install]
WantedBy=default.target

目前,只有 AliasWantedByRequiredBy 支持密钥。

安装节可以是主文件的一部分,也可以如上所述位于单独的插件文件中。后者允许您安装未启用的单元,然后通过安装插件来启用它。

NOTE: 要表示容器之间的依赖关系,请使用生成的服务名称。换句话说,就是 WantedBy=other.service ,不是 WantedBy=other.container 。对于其他类型的依赖关系也是如此,比如 After=other.service

模板文件

系统支持以下概念: [template files] (https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html#Service%20Templates).它们是运行时名称为“basename@instancename.service”形式的单元,但可以从单个“basename@.service”文件多次实例化。通过使用具有完整实例名称的插件文件,各个实例也可以不同。

Quadlet以两种方式支持这些功能。首先,一个带有模板表单的四元组单元将生成一个带有模板表单的系统服务,该模板系统服务可以作为常规模板使用。例如,“foo@.tainer”将生成“foo@.service”,然后您可以“systemctl start foo@bar.service”。

其次,如果您创建一个类似于“foo@instance.tainer”的符号链接,它将生成一个实例化的模板文件。在生成该文件时,Quadlet将从实例化目录(foo@instance.tainer.d)和模板目录(foo@.tainer.d)中读取插件文件。这允许对单个实例进行自定义。

实例化模板文件(如 foo@bar.container )可以像非模板化的一样启用。但是,模板化的模板 (foo@.container )是不同的,因为它们需要实例化。如果 [Install] 节包含一个 DefaultInstance= 键,则该实例将被启用,但如果不启用,则不会发生任何事情,并且这些选项将仅用作使用符号链接实例化的单元的默认选项。

一个模板文件示例 sleep@.container 可能如下所示:

[Unit]
Description=A templated sleepy container

[Container]
Image=quay.io/fedora/fedora
Exec=sleep %i

[Service]
# Restart service when sleep finishes
Restart=always

[Install]
WantedBy=multi-user.target
DefaultInstance=100

如果安装了此程序,则在引导时将有一个 sleep@100.service 跑步时休眠100秒。然后,您可以执行如下操作 systemctl start sleep@50.service 启动另一个休眠50秒的实例,或者另一个服务可以通过如下依赖项启动它 Wants=sleep@50.service

另外,如果你这样做了 ln -s sleep@.container sleep@10.container 您还将在启动时运行10秒的睡眠。而且,如果您希望该特定实例与另一个映像一起运行,您可以创建一个插件文件,如下所示 sleep@10.container.d/10-image.conf

[Container]
Image=quay.io/centos/centos

调试单元文件

将单元文件放入其中一个单元搜索路径(如上所述)后,您可以从 systemctl start {--user} 。如果失败,并显示“Failure to Start Example.service:Unit Example.service Not Found.”,则可能是您使用了不正确的语法,或者您使用了较新版本的Podman Quadlet中的选项,生成器无法创建服务文件。

使用以下命令查看生成的文件和/或错误消息:

/usr/lib/systemd/system-generators/podman-system-generator {--user} --dryrun

调试有限的单元文件集

如果要调试一组有限的单元文件,可以将它们复制到单独的目录中,并将 QUADLET_UNIT_DIRS 运行以下命令时,将环境变量添加到此目录:

QUADLET_UNIT_DIRS=<Directory> /usr/lib/systemd/system-generators/podman-system-generator {--user} --dryrun

这将指示Quadlet在该目录中查找单元,而不是普通单元,并将输出限制为您正在调试的单元。

集装箱单位 [Container]

容器单元的名称为 .container 扩展名并包含一个 [Container] 描述作为服务运行的容器的部分。生成的服务文件包含一行,如下所示 ExecStart=podman run image-name ,并且本节中的大多数键控制传递给Podman的命令行选项。但是,一些选项也会影响如何设置system d以运行和与容器交互的细节。

默认情况下,Podman容器与单元具有相同的名称,但带有 systemd- 前缀,即 $name.container 文件创建一个 $name.service 单元和一个 systemd-$name 波德曼集装箱。这个 ContainerName 选项允许用用户提供的名称覆盖此默认名称。

只有一个必需的密钥, Image ,它定义服务运行的容器镜像。

的有效选项 [Container] 如下所示:

[Container] options

podman run equivalent

添加能力=CAP

--CAP-ADD CAP

AddDevice=/dev/foo

--设备/开发/信息

Annotation=“XYZ”

--注解“XYZ”

自动更新=注册表

--Label“io.tainers.auuppdate=注册表”

容器名称=名称

--名称名称

ContainersConfModule=/etc/nvd.conf

--MODULE=/ETC/NVD.conf

DNS=192.168.55.1

--dns=192.168.55.1

DNSOption=NDOTS:1

--dns-选项=ndots:1

DNSSearch=foo.com

--dns-search=foo.com

丢弃能力=CAP

--CAP-DROP=CAP

Entrypoint=/foo.sh

--Entry Point=/foo.sh

环境=foo=bar

--env foo=bar

环境文件=/tmp/env

--env-file/tmp/env

Environment主机=True

--环境主机

Exec=/usr/bin/命令

镜像规范后的命令-/usr/bin/命令

ExposeHostPort=50-59

--曝光50-59

GIDMap=0:10000:10

--gidmap=0:10000:10

GlobalArgs=--日志级别=调试

--日志级别=调试

组=1234

--用户UID:1234

HealthCmd=/usr/bin/命令

--Health-cmd=/usr/bin/命令

健康间隔=2M

--Health-Interval=2M

HealthOnFailure=终止

--故障时的健康=杀死

HealthRetries=5

--运行状况-重试次数=5

HealthStartPeriod=1M

--健康-开始-周期=周期=1M

HealthStartupCmd=命令

--Health-Startup-cmd=命令

HealthStartupInterval=1M

--Health-Starting-Interval=1M

HealthStartupRetries=8

--运行状况-启动-重试=8

HealthStartupSuccess=2

--健康-创业-成功=2

HealthStartupTimeout=1m33s

--运行状况-启动-超时=1m33s

健康超时=20秒

--运行状况超时=20秒

主机名=新主机名

--HOSTNAME=“新主机名”

图像=ubi8

图像规格-ubi8

IP=192.5.0.1

--IP 192.5.0.1

IP6=2001:DB8::1

--ip6 2001:DB8::1

LABEL=“XYZ”

--标签“XYZ”

日志驱动程序=日志

--日志驱动程序日志

掩码=/proc/sys/foo\:/proc/sys/bar

--安全选项掩码=/proc/sys/foo:/proc/sys/bar

安装=类型=...

--装载类型=...

网络=主机

--网络主机

NoNewPrivileges=True

--安全选项无新权限

NOTIFY=真

--SDNOTIFY容器

PidsLimit=10000

--PIDs--限制10000

Pod=Pod-Name

--pod=pod-name

PodmanArgs=--添加主机页签

--添加主机页签

发布端口=50-59

--出版50-59期

拉动=从不

--Pull=从不

只读=TRUE

--只读

ReadOnlyTmpfs=TRUE

--只读-tmpfs

Rootfs=/var/lib/rootfs

--rootfs/var/lib/rootfs

RunInit=True

--初始化

SeccompProfile=/tmp/s.json

--Security-opt seccomp=/tMP/s.json

机密=机密

--机密=机密 [,opt=opt ...]

SecurityLabelDisable=True

--安全选项标签=禁用

SecurityLabelFileType=usr_t

--SECURITY-OPT标签=文件类型:usr_t

安全标签级别=s0:c1、c2

--安全选项标签=级别:s0:c1、c2

SecurityLabelNest=True

--安全选项标签=嵌套

SecurityLabelType=spc_t

--SECURITY-OPT标签=类型:spc_t

ShmSize=100M

--SHM-大小=100米

停止超时=20

--停止超时=20

SubGIDMap=gtest

--subgidname=gtest

SubUIDMap=uTest

--subuidname=uTest

系统=名称=值

--sysctl=名称=值

时区=本地

--TZ本地

Tmpfs=/Work

--tmpf/work

Uidmap=0:10000:10

--uidmap=0:10000:10

U限制=无文件=1,000:10000

--ulimit nofile=1000:10000

取消掩码=全部

--安全选项取消掩码=全部

用户=bin

--用户绑定

UserNS=Keep-id:Uid=200,GID=210

--用户Keep-id:uid=200,gid=210

卷=/源:/目标

--卷/源:/目标

工作目录=$HOME

--工作目录$HOME

描述: [Container] 部分包括:

AddCapability=

除了默认的Podman功能集之外,还可以将这些功能添加到容器中。

这是一个空格分隔的功能列表。此密钥可以多次列出。

例如:

AddCapability=CAP_DAC_OVERRIDE CAP_IPC_OWNER

AddDevice=

将设备节点从主机添加到容器中。其格式为 HOST-DEVICE[:CONTAINER-DEVICE][:PERMISSIONS] ,在哪里 HOST-DEVICE 是主机上设备节点的路径, CONTAINER-DEVICE 是容器中设备节点的路径,并且 PERMISSIONS 是一个权限列表,其中‘r’代表读,‘w’代表写,‘m’代表mKNOD(2)。这个 - Prefix告诉Quadlet仅当主机上存在该设备时才添加该设备。

此密钥可以多次列出。

Annotation=

在容器上设置一个或多个OCI注释。该格式是一个列表 key=value 项,类似于 Environment

此密钥可以多次列出。

AutoUpdate=

指示容器是否将自动更新( [podman-auto-update(1)] (podman-Auto-upate.1.md))。支持下列值:

  • registry :需要使用完全限定的镜像引用(例如,quay.io/podman/稳定:最新)来创建容器。这种强制执行对于知道要实际检查和拉入哪个图像是必要的。如果使用了图像ID,Podman将不再知道要检查/提取哪个图像。

  • local :告诉Podman将容器正在使用的图像与其在本地存储中的原始名称进行比较。如果映像在本地更新,Podman只需重新启动执行容器的系统单元。

ContainerName=

Podman容器的(可选)名称。如果未指定此项,则默认为 systemd-%N 与服务名称相同,但带有 systemd- 前缀,以避免与用户管理的容器冲突。

ContainersConfModule=

加载指定的tainers.conf(5)模块。相当于波德曼 --module 选择。

此密钥可以多次列出。

DNS=

为此网络中的容器设置网络作用域的DNS解析器/名称服务器。

此密钥可以多次列出。

DNSOption=

设置自定义的DNS选项。

此密钥可以多次列出。

DNSSearch=

设置自定义DNS搜索域。使用 DNSSearch=. 要删除搜索域,请执行以下操作。

此密钥可以多次列出。

DropCapability=

从默认的Podman功能集中删除这些功能,或者 all 放弃所有能力。

这是一个空格分隔的功能列表。此密钥可以多次列出。

例如:

DropCapability=CAP_DAC_OVERRIDE CAP_IPC_OWNER

Entrypoint=

覆盖图像中的默认入口点。相当于波德曼 --entrypoint 选择。以json字符串的形式指定多选项命令。

Environment=

在容器中设置环境变量。它使用的格式与 [services in systemd] (https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Environment=),并可以多次上市。

EnvironmentFile=

使用以行分隔的文件在容器中设置环境变量。该路径可以是绝对路径,也可以是单元文件位置的相对路径。此密钥可以多次使用,并且在传递给 podman run

EnvironmentHost=

使用容器内部的主机环境。

Exec=

如果设置了此项,则它将定义在容器中运行的命令行。如果未设置,则使用容器映像的默认入口点。格式与的格式相同 [systemd command lines] (https://www.freedesktop.org/software/systemd/man/systemd.service.html#Command%20lines).

ExposeHostPort=

公开一个端口或一系列端口(例如 50-59 ),从宿主到容器。相当于波德曼 --expose 选择。

此密钥可以多次列出。

GIDMap=

使用提供的GID映射在新的用户命名空间中运行容器。相当于波德曼 --gidmap 选择。

此密钥可以多次列出。

GlobalArgs=

此键包含直接在 podmanrun 在生成的文件中。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。

它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。

此密钥可以多次列出。

Group=

要作为容器内部运行的(数字)GID。这不需要与主机上的GID匹配,可以使用以下命令进行修改 UsersNS ,但如果未指定,则也会在主机上使用此GID。

HealthCmd=

设置或更改容器的运行状况检查命令。值为None将禁用现有运行状况检查。相当于波德曼 --health-cmd 选择。

HealthInterval=

设置运行状况检查的间隔。禁用间隔将不会自动设置计时器。相当于波德曼 --health-interval 选择。

HealthOnFailure=

容器转换到不正常状态后要执行的操作。组合使用的“KILL”操作与SYSTEM D集成得最好。一旦容器变得不健康,它就会被终止,并且system d重新启动该服务。相当于波德曼 --health-on-failure 选择。

HealthRetries=

在运行状况检查被视为不健康之前允许的重试次数。相当于波德曼 --health-retries 选择。

HealthStartPeriod=

容器引导所需的初始化时间。相当于波德曼 --health-start-period 选择。

HealthStartupCmd=

为容器设置启动运行状况检查命令。相当于波德曼 --health-startup-cmd 选择。

HealthStartupInterval=

设置启动运行状况检查的间隔。禁用间隔将不会自动设置计时器。相当于波德曼 --health-startup-interval 选择。

HealthStartupRetries=

在启动运行状况检查重新启动容器之前允许的尝试次数。相当于波德曼 --health-startup-retries 选择。

HealthStartupSuccess=

启动运行状况检查成功并开始常规运行状况检查之前所需的成功运行次数。相当于波德曼 --health-startup-success 选择。

HealthStartupTimeout=

启动运行状况检查命令在标记为失败之前必须完成的最长时间。相当于波德曼 --health-startup-timeout 选择。

HealthTimeout=

在间隔被视为失败之前允许完成运行状况检查的最长时间。相当于波德曼 --health-timeout 选择。

HostName=

设置容器内可用的主机名。相当于波德曼 --hostname 选择。

Image=

要在容器中运行的映像。出于性能和健壮性的原因,建议使用完全限定的映像名称,而不是短名称。

名称的格式与传递给 podman pull 。因此,它支持使用 :tag 或摘要以保证特定的图像版本。

作为特例,如果 name 图像的末尾为 .image ,Quadlet将使用由相应的 .image 文件,并且生成的系统d服务包含对 $name-image.service 。注意,对应的 .image 文件必须存在。

IP=

为容器指定静态IPv4地址,例如 10.88.64.128 。相当于波德曼 --ip 选择。

IP6=

为容器指定静态IPv6地址,例如 fd46:db93:aa76:ac37::10 。相当于波德曼 --ip6 选择。

Label=

在集装箱上设置一个或多个OCI标签。该格式是一个列表 key=value 项,类似于 Environment

此密钥可以多次列出。

LogDriver=

设置Podman在运行容器时使用的日志驱动程序。相当于波德曼 --log-driver 选择。

Mask=

指定要用冒号分隔的掩码路径。 Mask=/path/1:/path/2 。无法在容器内访问掩码路径。

Mount=

将文件系统挂载附加到容器。这相当于波德曼 --mount 选项,通常具有以下形式 type=TYPE,TYPE-SPECIFIC-OPTION[,...]

作为特例,对于 type=volume 如果 source 结尾为 .volume ,一个叫VOLUME的波德曼叫 systemd-$name 被用作源,并且生成的system d服务包含对 $name-volume.service 。这样的卷可以使用 $name.volume 四元组文件。

此密钥可以多次列出。

Network=

指定容器的自定义网络。它的格式与 --network 选项以 podman run 。例如,使用 host 使用容器中的主机网络,或者 none 不在容器中设置网络。

作为特例,如果 name 网络的结尾为 .network ,一个叫Podman的网络 systemd-$name ,并且生成的系统d服务包含对 $name-network.service 。这样的网络可以通过使用 $name.network 四元组文件。

此密钥可以多次列出。

NoNewPrivileges= (默认为 no )

如果启用,这将禁止容器进程通过setuid和文件功能等获得额外的权限。

Notify= (默认为 no )

默认情况下,Podman的运行方式是由容器运行时处理系统启动通知命令。换句话说,当容器运行时启动容器中的子级时,服务被视为已启动。但是,如果容器应用程序支持 [sd_notify] (https://www.freedesktop.org/software/systemd/man/sd_notify.html),然后设置 Notify 设置为True,则将通知详细信息传递给容器,允许容器自己通知启动。

此外,设置 Notifyhealthy 将推迟启动通知,直到Podman Health Checks确定集装箱标记为健康。请注意,这需要设置容器运行状况检查,请参阅 HealthCmd 有关更多信息的选项。

PidsLimit=

调整容器的PID限制。这相当于波德曼 --pids-limit 选择。

Pod=

指定四元组 .pod 要将容器链接到的单元。该值必须采用以下形式 <name>.pod 以及 .pod 单位必须存在。

Quadlet将添加所有必要的参数来链接容器和Pod之间以及它们相应的服务之间。

PodmanArgs=

此键包含直接传递到 podman run 命令在生成的文件中(就在命令行中的图像名称之前)。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。

它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。

此密钥可以多次列出。

PublishPort=

公开一个端口或一系列端口(例如 50-59 ),从容器到宿主。相当于波德曼 --publish 选择。该格式类似于Podman选项,其形式为 ip:hostPort:containerPortip::containerPorthostPort:containerPortcontainerPort ,其中主机和集装箱端口的数量必须相同(在范围的情况下)。

如果IP设置为0.0.0.0或根本未设置,则该端口将绑定到主机上的所有IPv4地址上;使用 [::] 用于IPv6。

请注意,不列出主机端口意味着Podman会自动选择一个端口,并且每次调用服务时可能会有所不同。这使得这不是一个有用的选择。分配的端口可以通过 podman port 指挥部。

此密钥可以多次列出。

Pull=

设置镜像拉取策略。这相当于波德曼 --pull 选择权

ReadOnly= (默认为 no )

如果启用,则使图像为只读。

ReadOnlyTmpfs= (默认为 yes )

如果ReadOnly设置为 yes ,在/dev、/dev/shm、/run、/tmp和/var/tmp上挂载读写tmpf。

Rootfs=

要用于容器的rootf。RootFS指向系统上的一个目录,该目录包含要在容器中运行的内容。此选项与 Image 选择。

Rootfs的格式与传递给 podman run --rootfs ,因此它也支持覆盖挂载。

注意:在SELinux系统上,rootfs需要正确的标签,默认情况下为unconfined_u:Object_r:tainer_file_t:s0。

RunInit= (默认为 no )

如果启用,容器在容器内具有转发信号和获取进程的最小初始化进程。

SeccompProfile=

设置要在容器中使用的seccomp配置文件。如果未设置,则使用默认的Podman配置文件。设置为json文件的路径名,或者 unconfined 禁用seccomp筛选器。

Secret=

将容器中的Podman密码用作文件或环境变量。这相当于波德曼 --secret 选项,并且通常具有以下形式 secret[,opt=opt ...]

SecurityLabelDisable=

关闭容器的标签分离。

SecurityLabelFileType=

设置容器文件的标签文件类型。

SecurityLabelLevel=

设置容器进程的标签进程级别。

SecurityLabelNested=

允许SecurityLabels在容器内运行。这允许分离在容器内创建的容器。

SecurityLabelType=

设置容器进程的标签进程类型。

ShmSize=

/dev/shm的大小。

这相当于波德曼 --shm-size 选项,并且通常具有以下形式 number[unit]

StopTimeout=

在强制停止容器之前等待的秒数。

请注意,该值应小于实际的系统d单元超时,以确保系统d不会终止podman rm命令。

这相当于波德曼 --stop-timeout 选择权

SubGIDMap=

使用/etc/subgid文件中的名称映射在新的用户名称空间中运行容器。相当于波德曼 --subgidname 选择。

SubUIDMap=

使用/etc/subuid文件中的名称映射在新的用户名称空间中运行容器。相当于波德曼 --subuidname 选择。

Sysctl=

配置容器的命名空间内核参数。格式为 Sysctl=name=value

这是一个以空格分隔的内核参数列表。此密钥可以多次列出。

例如:

Sysctl=net.ipv6.conf.all.disable_ipv6=1 net.ipv6.conf.all.use_tempaddr=1

Timezone= (如果未设置,则使用系统配置的默认设置)

运行容器所在的时区。

Tmpfs=

在容器中挂载一个tmpfs。这相当于波德曼 --tmpfs 选项,通常具有以下形式 CONTAINER-DIR[:OPTIONS]

此密钥可以多次列出。

UIDMap=

使用提供的UID映射在新的用户名称空间中运行容器。相当于波德曼 --uidmap 选择。

此密钥可以多次列出。

Ulimit=

ULimit选项。设置容器内部的ulimits值。

此密钥可以多次列出。

Unmask=

指定要取消屏蔽的路径,以冒号分隔。UNMASK=ALL或/Path/1:/Path/2,或Shell展开路径(/proc/*):

如果设置为 ALL ,Podman将取消屏蔽默认情况下被屏蔽或设置为只读的所有路径。

默认掩码路径是/proc/acpi、/proc/kcore、/proc/key、/proc/等待时间统计信息、/proc/sched_debug、/proc/scsi、/proc/Timer_list、/proc/Timer_stats、/sys/Firmware和/sys/fs/selinux。

只读的默认路径为/proc/asound、/proc/bus、/proc/fs、/proc/irq、/proc/sys、/proc/SysRq-rigger、/sys/fs/cgroup。

User=

要作为容器内部运行的(数字)UID。这不需要与主机上的UID匹配,可以使用以下命令进行修改 UserNS ,但如果未指定,则也会在主机上使用此UID。

UserNS=

设置容器的用户命名空间模式。这相当于波德曼 --userns 选项,并且通常具有以下形式 MODE[:OPTIONS,...]

Volume=

在容器中装入卷。这相当于波德曼 --volume 选项,通常具有以下形式 [[SOURCE-VOLUME|HOST-DIR:]CONTAINER-DIR[:OPTIONS]]

如果 SOURCE-VOLUME 开头为 . ,则Quadlet解析相对于单元文件位置的路径。

作为特例,如果 SOURCE-VOLUME 结尾为 .volume ,一个叫VOLUME的波德曼叫 systemd-$name 被用作源,并且生成的system d服务包含对 $name-volume.service 。这样的卷可以使用 $name.volume 四元组文件。

此密钥可以多次列出。

WorkingDir=

容器内的工作目录。

在容器中运行二进制文件的默认工作目录是根目录(/)。图像开发人员可以使用WORKDIR指令设置不同的缺省值。此选项通过使用-w选项覆盖工作目录。

豆荚单位 [Pod]

Pod单元的名称为 .pod 扩展名并包含一个 [Pod] 描述作为服务创建和运行的Pod的部分。生成的服务文件包含一行,如下所示 ExecStartPre=podman pod create ,并且本节中的大多数键控制传递给Podman的命令行选项。

默认情况下,Podman Pod与单元名称相同,但带有 systemd- 前缀,即 $name.pod 文件创建一个 $name-pod.service 单元和一个 systemd-$name 波德曼吊舱。这个 PodName 选项允许用用户提供的名称覆盖此默认名称。

的有效选项 [Pod] 如下所示:

[Pod] options

podman container create equivalent

ContainersConfModule=/etc/nvd.conf

--MODULE=/ETC/NVD.conf

GlobalArgs=--日志级别=调试

--日志级别=调试

网络=主机

--网络主机

PodmanArgs=--CPU=2

--CPU=2

PodName=名称

--名称=名称

发布端口=50-59

--出版50-59期

卷=/源:/目标

--卷/源:/目标

中支持的密钥 [Pod] 部分包括:

ContainersConfModule=

加载指定的tainers.conf(5)模块。相当于波德曼 --module 选择。

此密钥可以多次列出。

GlobalArgs=

此键包含直接在 podmanpod 在生成的文件中。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。

它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。

此密钥可以多次列出。

Network=

指定Pod的自定义网络。它的格式与 --network 选项以 podman pod create 。例如,使用 host 使用Pod中的主机网络,或者 none 不在Pod中设置网络。

作为特例,如果 name 网络的结尾为 .network ,Quadlet将查找对应的 .network 四分体单元。如果找到,Quadlet将使用单元中网络集的名称,否则, systemd-$name 使用的是。生成的SYSTEM D服务包含对为此生成的服务单元的依赖 .network 单位,或打开 $name-network.service 如果 .network 找不到单位

此密钥可以多次列出。

PodmanArgs=

此键包含直接传递到 podman pod create 命令在生成的文件中。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。

它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。

此密钥可以多次列出。

PodName=

Podman Pod的(可选)名称。如果未指定此项,则默认为 systemd-%N 与服务名称相同,但带有 systemd- 前缀,以避免与用户管理的容器冲突。

请注意,Pod和容器不能具有相同的名称。因此,如果设置了PodName,则它不能与任何容器冲突。

PublishPort=

公开一个端口或一系列端口(例如 50-59 ),从豆荚到寄主。相当于波德曼 --publish 选择。该格式类似于Podman选项,其形式为 ip:hostPort:containerPortip::containerPorthostPort:containerPortcontainerPort ,其中主机和集装箱端口的数量必须相同(在范围的情况下)。

如果IP设置为0.0.0.0或根本未设置,则该端口将绑定到主机上的所有IPv4地址上;使用 [::] 用于IPv6。

请注意,不列出主机端口意味着Podman会自动选择一个端口,并且每次调用服务时可能会有所不同。这使得这不是一个有用的选择。分配的端口可以通过 podman port 指挥部。

此密钥可以多次列出。

Volume=

在Pod中装载卷。这相当于波德曼 --volume 选项,通常具有以下形式 [[SOURCE-VOLUME|HOST-DIR:]CONTAINER-DIR[:OPTIONS]]

如果 SOURCE-VOLUME 开头为 . ,则Quadlet解析相对于单元文件位置的路径。

作为特例,如果 SOURCE-VOLUME 结尾为 .volume ,Quadlet将查找对应的 .volume 四分体单元。如果找到,Quadlet将使用单元中的卷集的名称,否则, systemd-$name 使用的是。生成的SYSTEM D服务包含对为此生成的服务单元的依赖 .volume 单位,或打开 $name-volume.service 如果 .volume 找不到单位

此密钥可以多次列出。

库贝单位 [Kube]

Kube单位使用一个 .kube 扩展名并包含一个 [Kube] 一节介绍如何 podman kube play 作为服务运行。生成的服务文件包含一行,如下所示 ExecStart=podman kube play file.yml ,并且本节中的大多数键控制传递给Podman的命令行选项。但是,一些选项也会影响如何设置system d以运行和与容器交互的细节。

只有一个必需的密钥, Yaml ,它定义了Kubernetes YAML文件的路径。

的有效选项 [Kube] 如下所示:

[Kube] options

podman kube play equivalent

自动更新=注册表

--注解“io.tainers.auuppdate=注册表”

ConfigMap=/tmp/config.map

--CONFIG-MAP/tMP/config.map

ContainersConfModule=/etc/nvd.conf

--MODULE=/ETC/NVD.conf

ExitCodePropagation=方式

如何传播容器错误状态

GlobalArgs=--日志级别=调试

--日志级别=调试

KubeDownForce=True

--力(用于 podman kube down )

日志驱动程序=日志

--日志驱动程序日志

网络=主机

--网络主机

PodmanArgs=--注解=键=值

--注解=键=值

发布端口=59-60

--发布=59-60

SetWorkingDirectory=YAML

WorkingDirectory 单元文件到YAML文件的位置

UserNS=Keep-id:Uid=200,GID=210

--用户Keep-id:uid=200,gid=210

Yaml=/tmp/kube.yaml

Podman Kube play/tMP/kube.yaml

中支持的密钥 [Kube] 部分包括:

AutoUpdate=

指示容器是否将自动更新( [podman-auto-update(1)] (podman-Auto-upate.1.md))。可以多次指定AutoUppdate。支持下列值:

  • registry :需要使用完全限定的镜像引用(例如,quay.io/podman/稳定:最新)来创建容器。这种强制执行对于知道要实际检查和提取哪些图像是必要的。如果使用了图像ID,Podman将不再知道要检查/提取哪个图像。

  • local :告诉Podman将容器正在使用的图像与其在本地存储中的原始名称进行比较。如果映像在本地更新,Podman只需重新启动执行Kubernetes Quadlet的SYSTEM D单元。

  • name/(local|registry) :告诉Podman执行 localregistry 指定容器名称的自动更新。

ConfigMap=

将Kubernetes ConfigMap YAML路径传递给 podman kube play 通过 --configmap 争论。不像 configmap 参数,则该值只能包含一个路径,但它可以是绝对路径,也可以是单元文件位置的相对路径。

此密钥可能会多次使用

ContainersConfModule=

加载指定的tainers.conf(5)模块。相当于波德曼 --module 选择。

此密钥可以多次列出。

ExitCodePropagation=

控制SYSTEM D服务的主PID应该如何退出。支持下列值:

  • all :如果所有容器都已失败,则退出非零(即,退出非零)

  • any :如果任何容器出现故障,则退出非零

  • none :退出零并忽略失败的容器

当前缺省值为 none

GlobalArgs=

此键包含直接在 podmankube 在生成的文件中。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。

它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。

此密钥可以多次列出。

KubeDownForce=

调用时删除所有资源,包括卷 podman kube down 。相当于波德曼 --force 选择。

LogDriver=

设置Podman在运行容器时使用的日志驱动程序。相当于波德曼 --log-driver 选择。

Network=

指定容器的自定义网络。它的格式与 --network 选项以 podman kube play 。例如,使用 host 使用容器中的主机网络,或者 none 不在容器中设置网络。

作为特例,如果 name 网络的结尾为 .network ,一个叫Podman的网络 systemd-$name ,并且生成的系统d服务包含对 $name-network.service 。这样的网络可以通过使用 $name.network 四元组文件。

此密钥可以多次列出。

PodmanArgs=

此键包含直接传递到 podman kube play 命令在生成的文件中(就在命令行中YAML文件的路径之前)。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。

它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。

此密钥可以多次列出。

PublishPort=

公开一个端口或一系列端口(例如 50-59 ),从容器到宿主。相当于 podman kube play %s --publish 选择。该格式类似于Podman选项,其形式为 ip:hostPort:containerPortip::containerPorthostPort:containerPortcontainerPort ,其中主机和集装箱端口的数量必须相同(在范围的情况下)。

如果IP设置为0.0.0.0或根本未设置,则该端口将绑定到主机上的所有IPv4地址上;使用 [::] 用于IPv6。

单元文件中指定的已发布端口列表与Kubernetes YAML文件中指定的端口列表合并。如果在两者中指定了相同的容器端口和协议,则优先使用单元文件中的条目

此密钥可以多次列出。

SetWorkingDirectory=

设置 WorkingDirectory 中的字段 Service 系统服务单元文件的组。用于允许 podman kube play 以正确解析相对路径。支持的值包括 yamlunit 将工作目录分别设置为YAML或Quadlet单元文件的工作目录。

或者,用户可以显式设置 WorkingDirectory 中的字段 Service 组中的 .kube 文件。请注意,如果 WorkingDirectory 中的字段 Service 组已设置,Quadlet不会设置它,即使 SetWorkingDirectory 已设置

UserNS=

设置容器的用户命名空间模式。这相当于波德曼 --userns 选项,并且通常具有以下形式 MODE[:OPTIONS,...]

Yaml=

要使用的Kubernetes YAML文件的绝对或相对单元文件位置的路径。

网络单元 [Network]

网络文件使用 .network 扩展名并包含一个节 [Network] 描述命名Podman网络。生成的服务是一次性命令,可确保主机上存在网络,并在需要时创建网络。

默认情况下,Podman网络与设备同名,但带有 systemd- 前缀,即用于名为的网络文件 $NAME.network ,生成的Podman网络称为 systemd-$NAME ,生成的服务文件为 $NAME-network.service 。这个 NetworkName 选项允许用用户提供的名称覆盖此默认名称。

请注意,停止相应的服务不会删除Podman网络。此外,不支持更新现有网络。为了更新网络参数,您首先需要手动删除Podman网络,然后重新启动服务。

使用网络单元允许容器依赖于自动预先创建的网络。这在使用特殊选项控制网络创建时特别有趣,因为Podman会使用默认选项创建网络。

的有效选项 [Network] 如下所示:

[Network] options

podman network create equivalent

ContainersConfModule=/etc/nvd.conf

--MODULE=/ETC/NVD.conf

DisableDNS=TRUE

--禁用-dns

DNS=192.168.55.1

--dns=192.168.55.1

驱动程序=桥梁

--驱动桥

Gateway=192.168.55.3

--网关192.168.55.3

GlobalArgs=--日志级别=调试

--日志级别=调试

内部=真

--内部

IPAMDriver=dhcp

--IPAM-驱动程序dhcp

IPRange=192.168.55.128/25

--IP范围192.168.55.128/25

IPv6=TRUE

--IPv6

LABEL=“XYZ”

--标签“XYZ”

网络名称=foo

PODMAN网络创建Foo

选项=隔离=真

--opt隔离=TRUE

PodmanArgs=--dns=192.168.55.1

--dns=192.168.55.1

Subnet=192.5.0.0/16

--子网192.5.0.0/16

中支持的密钥 [Network] 部分包括:

ContainersConfModule=

加载指定的tainers.conf(5)模块。相当于波德曼 --module 选择。

此密钥可以多次列出。

DisableDNS= (默认为 no )

如果启用,则禁用此网络的DNS插件。

这相当于波德曼 --disable-dns 选择权

DNS=

为此网络中的容器设置网络作用域的DNS解析器/名称服务器。

此密钥可以多次列出。

Driver= (默认为 bridge )

用于管理网络的驱动程序。目前 bridgemacvlanipvlan 是受支持的。

这相当于波德曼 --driver 选择权

Gateway=

定义该子网的网关。如果要提供网关地址,还必须提供子网选项。

这相当于波德曼 --gateway 选择权

此密钥可以多次列出。

GlobalArgs=

此键包含直接在 podmannetwork 在生成的文件中。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。

它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。

此密钥可以多次列出。

Internal= (默认为 no )

限制此网络的外部访问。

这相当于波德曼 --internal 选择权

IPAMDriver=

设置网络的IPAM驱动程序(IP地址管理驱动程序)。目前 host-localdhcpnone 是受支持的。

这相当于波德曼 --ipam-driver 选择权

IPRange=

分配一定范围内的容器IP。该范围必须是CIDR表示法中的完整子网或位于 <startIP>-<endIP> 与CIDR子网相比,允许更灵活的范围的语法。Ip-range选项必须与子网选项一起使用。

这相当于波德曼 --ip-range 选择权

此密钥可以多次列出。

IPv6=

启用IPv6(双协议栈)网络。

这相当于波德曼 --ipv6 选择权

Label=

在网络上设置一个或多个OCI标签。该格式是一个列表 key=value 项,类似于 Environment

此密钥可以多次列出。

NetworkName=

Podman网络的(可选)名称。如果未指定此项,则默认为 systemd-%N 与设备名称相同,但带有 systemd- 前缀,以避免与用户管理的网络冲突。

Options=

设置驱动程序特定选项。

这相当于波德曼 --opt 选择权

PodmanArgs=

此键包含直接传递到 podman network create 命令在生成的文件中(就在命令行中的网络名称之前)。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。

它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。

此密钥可以多次列出。

Subnet=

CIDR表示法中的子网。

这相当于波德曼 --subnet 选择权

此密钥可以多次列出。

体积单位 [Volume]

卷文件使用 .volume 扩展名并包含一个节 [Volume] 描述命名的Podman卷。生成的服务是一次性命令,可确保该卷存在于主机上,并在需要时创建它。

默认情况下,Podman卷与设备具有相同的名称,但带有 systemd- 前缀,即用于名为的卷文件 $NAME.volume ,生成的Podman卷称为 systemd-$NAME ,生成的服务文件为 $NAME-volume.service 。这个 VolumeName 选项允许用用户提供的名称覆盖此默认名称。

使用卷单位允许容器依赖于自动预创建的卷。这在使用特殊选项控制卷创建时特别有趣,因为Podman会使用默认选项创建卷。

的有效选项 [Volume] 如下所示:

[Volume] options

podman volume create equivalent

ContainersConfModule=/etc/nvd.conf

--MODULE=/ETC/NVD.conf

复制=真

--选项复制

设备=tmpf

--opt设备=tmpf

驱动程序=图像

--驱动程序=图像

GlobalArgs=--日志级别=调试

--日志级别=调试

组=192

--OPT组=192

图像=quay.io/centos/centos\:最新

--opt image=quay.io/centos/centos\:最新

LABEL=“foo=bar”

--标签“foo=bar”

选项=XYZ

--选项XYZ

PodmanArgs=--驱动程序=图像

--驱动程序=图像

类型=类型

设备的文件系统类型

用户=123

--opt uid=123

VolumeName=foo

Podman卷创建Foo

中支持的密钥 [Volume] 部分包括:

ContainersConfModule=

加载指定的tainers.conf(5)模块。相当于波德曼 --module 选择。

此密钥可以多次列出。

Copy= (默认为 yes )

如果启用,则在第一次运行时会将位于卷装入点的映像内容复制到卷中。

Device=

为卷装载的设备的路径。

Driver=

指定卷驱动程序名称。当设置为时 image vt.的. Image 还必须设置密钥。

这相当于波德曼 --driver 选择。

GlobalArgs=

此键包含直接在 podmanvolume 在生成的文件中。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。

它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。

此密钥可以多次列出。

Group=

用作卷的组的主机(数字)GID或组名

Image=

指定卷所基于的图像 Driver 设置为 image 。出于性能和健壮性的原因,建议使用完全限定的映像名称,而不是短名称。

名称的格式与传递给 podman pull 。因此,它支持使用 :tag 或摘要以保证特定的图像版本。

作为特例,如果 name 图像的末尾为 .image ,Quadlet将使用由相应的 .image 文件,并且生成的系统d服务包含对 $name-image.service 。注意,对应的 .image 文件必须存在。

Label=

在卷上设置一个或多个OCI标签。该格式是一个列表 key=value 项,类似于 Environment

此密钥可以多次列出。

Options=

要用于文件系统的装载选项,如 mount(8) 命令 -o 选择。

PodmanArgs=

此键包含直接传递到 podman volume create 命令在生成的文件中(就在命令行中卷的名称之前)。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。

它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。

此密钥可以多次列出。

Type=

的文件系统类型 Device 中使用的 mount(8) 命令 -t 选择。

User=

用作卷所有者的主机(数字)UID或用户名

VolumeName=

Podman卷的(可选)名称。如果未指定此项,则默认为 systemd-%N 与设备名称相同,但带有 systemd- 前缀,以避免与用户管理的卷冲突。

图像单位 [Image]

图像文件使用 .image 扩展名并包含一个节 [Image] 描述容器镜像拉取命令。生成的服务是一次性命令,可确保映像存在于主机上,并在需要时将其拉出。

使用图像单位允许容器和体积依赖于自动拉出的图像。当使用特殊选项控制图像拉取时,这一点尤其有趣。

的有效选项 [Image] 如下所示:

[Image] options

podman image pull equivalent

所有标记=真

--所有标签

ARCH=AARCH64

--ARCH=aarch64

AuthFile=/etc/registry/auth.json

--认证文件=/等/注册表/身份验证.json

CertDir=/等等/注册表/证书

--cert-dir=/etc/Register/certs

ContainersConfModule=/etc/nvd.conf

--MODULE=/ETC/NVD.conf

凭据=我的名字\:密码

--creds=myname\:密码

DecryptionKey=/etc/registry.key

--DECRYPTION-KEY=/ETC/REGISTRY.Key

GlobalArgs=--日志级别=调试

--日志级别=调试

图像=quay.io/centos/centos:最新

Podman镜像拉取quay.io/centos/centos\:最新

ImageTag=码头.io/centos/centos:最新

在解析时使用此名称 .image 参考文献

操作系统=Windows

--os=Windows

PodmanArgs=--os=Linux

--os=Linux

TLSVerify=False

--TLS-Verify=FALSE

变量=ARM/v7

--变量=ARM/v7

AllTags=

将拉出存储库中所有已标记的图像。

这相当于波德曼 --all-tags 选择。

Arch=

覆盖要拉取的映像的体系结构,默认为主机。

这相当于波德曼 --arch 选择。

AuthFile=

身份验证文件的路径。

这相当于波德曼 --authfile 选择。

CertDir=

在路径中使用证书( .crt, * .cert,.key)连接到注册表。

这相当于波德曼 --cert-dir 选择。

ContainersConfModule=

加载指定的tainers.conf(5)模块。相当于波德曼 --module 选择。

此密钥可以多次列出。

Creds=

这个 [username[:password]] 用于向注册表进行身份验证(如果需要)。

这相当于波德曼 --creds 选择。

DecryptionKey=

这个 [key[:passphrase]] 用于图像解密。

这相当于波德曼 --decryption-key 选择。

GlobalArgs=

此键包含直接在 podmanimage 在生成的文件中。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。

它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。

此密钥可以多次列出。

Image=

要拉取的图像。出于性能和健壮性的原因,建议使用完全限定的映像名称,而不是短名称。

名称的格式与传递给 podman pull 。因此,它支持使用 :tag 或摘要以保证特定的图像版本。

ImageTag=

被引用对象的实际FQIN Image 。仅当源是文件或目录存档时才有意义。

例如,将图像保存到 docker-archive 使用以下Podman命令:

podman image save --format docker-archive --output /tmp/archive-file.tar quay.io/podman/stable:latest

需要设置

  • Image=docker-archive:/tmp/archive-file.tar

  • ImageTag=quay.io/podman/stable:latest

OS=

覆盖要拉取的映像的操作系统,默认为主机。

这相当于波德曼 --os 选择。

PodmanArgs=

此键包含直接传递到 podman image pull 命令在生成的文件中(就在命令行中的图像名称之前)。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。

它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。

此密钥可以多次列出。

TLSVerify=

在联系注册处时要求HTTPS和证书验证。

这相当于波德曼 --tls-verify 选择。

Variant=

覆盖容器镜像的默认体系结构变量。

这相当于波德曼 --variant 选择。

EXAMPLES

示例 test.container

[Unit]
Description=A minimal container

[Container]
# Use the centos image
Image=quay.io/centos/centos:latest

# Use volume and network defined below
Volume=test.volume:/data
Network=test.network

# In the container we just run sleep
Exec=sleep 60

[Service]
# Restart service when sleep finishes
Restart=always
# Extend Timeout to allow time to pull the image
TimeoutStartSec=900
# ExecStartPre flag and other systemd commands can go here, see systemd.unit(5) man page.
ExecStartPre=/usr/share/mincontainer/setup.sh

[Install]
# Start by default on boot
WantedBy=multi-user.target default.target

示例 test.kube

[Unit]
Description=A kubernetes yaml based service
Before=local-fs.target

[Kube]
Yaml=/opt/k8s/deployment.yml

[Install]
# Start by default on boot
WantedBy=multi-user.target default.target

示例 test.volume

[Volume]
User=root
Group=root
Label=org.test.Key=value

示例 test.network

[Network]
Subnet=172.16.0.0/24
Gateway=172.16.0.1
IPRange=172.16.0.0/28
Label=org.test.Key=value

Pod中的容器示例:

test.pod

[Pod]
PodName=test

centos.container

[Container]
Image=quay.io/centos/centos:latest
Exec=sh -c "sleep inf"
Pod=test.pod

另请参阅

systemd.unit(5), systemd.service(5), podman-run(1), podman-network-create(1), podman-auto-update(1) [systemd.unit(5)]