NAME¶
Podman-system.单位-使用Podman Quadlet的系统单位
SYNOPSIS¶
name 。容器, name 。音量, name 。网络, name .kube name 。图片, name .build name .pod
Podman Rootful单元搜索路径¶
根用户的Quadlet文件可以放置在以下按优先顺序排列的目录中。这意味着/run下发现的重复命名四元组优先于/等等中的四元组,以及/SAL中的四元组:
临时四柱体,通常用于测试:
/run/containers/system/
系统管理员定义的象限:
/ETC/CONTAINS/SYSTEM/
分布定义的象限:
/usr/Share/Containers/SYSTEM/
Podman无根单元搜索路径¶
非根用户的Quadlet文件可以放置在以下目录中:
$XDG_RUNTIME_DIR/containers/systemd/
$XDG_CONFIG_HOME/CONTAINS/SYSTEM D/或~/.CONFIG/CONTAINS/SYSTEM D/
/ETC/CONTAINS/SYSTEM/USERS/$(UID)
/ETC/CONTAINS/SYSTEM/USERS/
使用符号链接¶
Quadlet支持在搜索路径的底部和内部使用符号链接。
DESCRIPTION¶
Podman支持通过Systemd构建和启动容器(以及创建卷) [systemd generator] (https://www.freedesktop.org/software/systemd/man/systemd.generator.html)。这些文件在引导期间读取(以及 systemctl daemon-reload 运行)并生成相应的常规Systemd服务单元文件。支持系统和用户Systemd单元。支持标准Systemd单位文件中可用的所有选项和表。例如, [Service] 表和 [Install] 表直接传递给system d并由其处理。有关更多信息,请参阅system d.Unit(5)手册页。
Podman生成器读取上面的搜索路径并读取具有扩展名的文件 .container .volume , .network , .build , .pod 和 .kube ,并为每个文件生成一个类似名称的 .service 文件.请注意,现有的供应商服务(即,在 /usr/ )如果它们具有相同的名称,则被替换。生成的单元文件可以通过启动和管理 systemctl 与任何其他Systemd服务一样。 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 扩展名,然后按字母顺序合并到基本文件中。顶级类型的临时访问 (container.d )也将包括在内。如果单位名称中包含破折号(“-”) (foo-bar-baz.container ),然后也搜索在破折号后截断名称生成的插入式目录 (foo-.container.d 和 foo-bar-.container.d ).具有相同名称的下拉文件会覆盖层次结构中更高的文件 (foo-bar-baz.container.d/10-override.conf 覆盖 foo-bar-.container.d/10-override.conf ,它覆盖 foo-.service.d/10-override.conf ,它覆盖 container.d/10-override.conf ).这些插入式文件的格式与基本文件相同。这对于更改或添加设备的配置设置非常有用,而不必修改设备文件。
对于无根容器,当管理员将Quadlet文件放置在/等等/containers/system/users目录中时,所有用户的会话都会在登录会话开始时执行Quadlet。如果管理员将Quadlet文件放置在/等等/containers/system/users/${UID}/目录中,则只有具有匹配UID的用户才会在登录会话开始时执行Quadlet。对于放置在/等/containers/system/user/${UID}/和其他用户单位搜索路径内的子目录中的单位文件,Quadlet将以迭代方式搜索并运行这些子目录中存在的单位文件。
注意:当Quadlet启动时,Podman经常拉取或构建一个容器图像,这可能需要相当长的时间。Systemd默认服务开始时间为90秒,否则服务失败。预拉图像或延长服务的Systemd超时时间 TimeoutStartSec 服务选项可以解决问题。请注意: TimeoutStartSec 不可用于 Type=oneshot 单位参阅 systemd.service(5) 了解有关如何处理主要流程完成后不需要保持活动状态的设备的长启动时间的更多信息。
将以下代码片段添加到一个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 , .build ,而且 .image 文件.
然而, Type 可以显式设置为 oneshot 为 .container 和 .kube 在没有容器运行一次的情况下创建文件 podman 出口。
当设置 Type=oneshot ,建议还设置 RemainAfterExit=yes 防止服务状态变成 inactive (dead) .然而,当通过计时器单元激活服务时,具有 RemainAfterExit=yes 使作业处于“已启动”状态,防止计时器随后激活。更多详见 systemd.service(5) 手册页。
这类情况的示例:
.container文件,其中包含在其入口点完成后退出的图像.kube指向未定义任何容器的Kubernetes YAML文件的文件。例如,仅限PVC
启用单位文件¶
Podman创建的服务被Systemd视为暂时性的,这意味着它们不具有与常规单元相同的持久性规则。特别是,不可能 systemctl enable 它们,以便它们在下次启动时自动启用。
为了补偿这一点,生成器手动应用 [Install] 部分的容器定义单元文件在生成期间,以相同的方式 systemctl enable 在以后运行时执行此操作。
例如,要在引导时启动容器,请将类似以下内容添加到文件:
[Install]
WantedBy=default.target
目前只有 Alias , WantedBy , RequiredBy ,而且 UpheldBy 键支持。
安装节可以是主文件的一部分,也可以如上所述位于单独的插件文件中。后者允许您安装未启用的单元,然后通过安装插件来启用它。
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
相对路径¶
为了支持Systemd说明符,Quadlet不会解析以 % .要解决这样的路径,请在其前面添加 ./ .
例如,而不是 EnvironmentFile=%n/env 使用 EnvironmentFile=./%n/env
调试单元文件¶
将单元文件放入其中一个单元搜索路径(如上所述)后,您可以从 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
或者,使用以下命令仅显示错误:
systemd-analyze {--user} --generators=true verify example.service
该命令还对生成的服务单元执行额外检查。有关详细信息,请参阅Systemd-Analyze(1)手册页。
调试有限的单元文件集¶
如果要调试一组有限的单元文件,可以将它们复制到单独的目录中,并将 QUADLET_UNIT_DIRS 运行以下命令时,将环境变量添加到此目录:
QUADLET_UNIT_DIRS=<Directory> /usr/lib/systemd/system-generators/podman-system-generator {--user} --dryrun
这将指示Quadlet在该目录中查找单元,而不是普通单元,并将输出限制为您正在调试的单元。
隐性网络依赖性¶
Quadlet将添加对 network-online.target (as根)或 podman-user-wait-network-online.service (as用户)通过添加 After= 和 Wants= 属性到单位。这是为了确保如果需要拉取图像并且在容器启动时网络是可访问的。
专案 podman-user-wait-network-online.service 需要单位作为用户,因为用户单位无法等待系统(根)单位, network-online.target 在那里没有做任何事情,而是被忽视。由于这造成了大量问题,我们决定通过我们自己的特殊目的单位来解决这个问题,该单位只是检查是否 network-online.target 单位活跃于 systemctl is-active network-online.target .
可以通过添加以下内容来禁用此行为 DefaultDependencies=false 在 Quadlet 科.照会 systemd ` [Unit] '部分有一个名称相同但含义不同的选项。
Quadlet单位之间的依赖性¶
Quadlet将自动翻译键中指定的依赖项 Wants , Requires , Requisite , BindsTo , PartOf , Upholds , Conflicts , Before 和 After 的 [Unit] 部分,在不同的Quadlet单元之间。
例如 fedora.container 下面的单元指定了对 basic.container 单位
[Unit]
After=basic.container
Requires=basic.container
[Container]
Image=registry.fedoraproject.org/fedora:41
设置资源名称¶
Quadlet单元允许设置创建资源的名称(例如 VolumeName 为 .volume 单位或 PodName 为 .pod 单位)。
请注意,使用引用生成的服务单元的Systemd说明符(例如 $N )打破了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 |
--设备/开发/信息 |
AddHost=example.com:192.168.10.11 |
--add-host example.com:192.168.10.11 |
Annotation=“XYZ” |
--注解“XYZ” |
自动更新=注册表 |
--Label“io.tainers.auuppdate=注册表” |
CgroupsMode=无条件 |
--cgroups=无条件 |
容器名称=名称 |
--名称名称 |
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=example.com |
--dns-search example.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 |
Group添加=keep-groups |
--group-add=keep-groups |
HealthCmd=/usr/bin/命令 |
--Health-cmd=/usr/bin/命令 |
健康间隔=2M |
--Health-Interval=2M |
HealthLogDestination=/foo/log |
--health-log-目的地=/foo/log |
健康最大日志计数=5 |
--health-max-log-count=5 |
HealthMaxLogSize=500 |
--health-max-log-size=500 |
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=example.com |
--主机名example.com |
图像=ubi8 |
图像规格-ubi8 |
IP=192.5.0.1 |
--IP 192.5.0.1 |
IP6=2001:DB8::1 |
--ip6 2001:DB8::1 |
LABEL=“XYZ” |
--标签“XYZ” |
日志驱动程序=日志 |
--日志驱动程序日志 |
LogOpt=path=/var/log/mykube.json |
--log-opp路径=/var/log/mykube.json |
掩码=/proc/sys/foo\:/proc/sys/bar |
--安全选项掩码=/proc/sys/foo:/proc/sys/bar |
内存= 20克 |
--内存20克 |
安装=类型=... |
--装载类型=... |
网络=主机 |
--网络主机 |
网络收件箱=名称 |
--网络别名 |
NoNewPrivileges=True |
--安全选项无新权限 |
NOTIFY=真 |
--SDNOTIFY容器 |
PidsLimit=10000 |
--PIDs--限制10000 |
Pod=Pod-Name |
--pod=pod-name |
PodmanArgs=--发布8080:80 |
--发布8080:80 |
PublishPort=8080:80 |
--发布8080:80 |
拉动=从不 |
--拉从不 |
只读=TRUE |
--只读 |
ReadOnlyTmpfs=TRUE |
--只读-tmpfs |
DeliveradCtd =/SAL/bin/命令 |
添加Exec ad并使用值运行exec |
收件箱信号=SIGHUP |
添加Executive ad并使用信号运行杀死 |
= 5 |
--再试=5 |
重试延迟=5s |
--再试延迟= 5秒 |
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米 |
StartWithPod=true |
如果定义Pod=,则容器由Pod启动 |
停止信号=SIGINT |
--stop-signal=SIGINT |
停止超时=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仅当主机上存在该设备时才添加该设备。
此密钥可以多次列出。
AddHost=¶
将主机到IP映射添加到/等等/主机。格式是 hostname:ip .
相当于Podman --add-host 选项.该密钥可以列出多次。
Annotation=¶
在容器上设置一个或多个OCI注释。该格式是一个列表 key=value 项,类似于 Environment 。
此密钥可以多次列出。
AutoUpdate=¶
指示容器是否将自动更新( [podman-auto-update(1)] (podman-Auto-upate.1.md))。支持下列值:
registry:需要使用完全限定的镜像引用(例如,quay.io/podman/稳定:最新)来创建容器。这种强制执行对于知道要实际检查和拉入哪个图像是必要的。如果使用了图像ID,Podman将不再知道要检查/提取哪个图像。local:告诉Podman将容器正在使用的图像与其在本地存储中的原始名称进行比较。如果映像在本地更新,Podman只需重新启动执行容器的系统单元。
CgroupsMode=¶
Podman容器的cgroups模式。相当于Podman --cgroups 选项.
默认情况下,Quadlet创建的容器的cgroups模式为 split ,与默认不同 (enabled )由Podman CLI使用。
如果容器加入pod(即 Pod= 指定),您可能想将其更改为 no-conmon 或 enabled 以便Pod级cgroup资源限制可以生效。
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=¶
从图像中删除默认的INTETRYPOTION。相当于Podman --entrypoint 选项.以SON字符串的形式指定多选项命令。
Environment=¶
在容器中设置环境变量。它使用的格式与 [services in systemd] (https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Environment=),并可以多次上市。
EnvironmentFile=¶
使用以行分隔的文件在容器中设置环境变量。该路径可以是绝对路径,也可以是单元文件位置的相对路径。此密钥可以多次使用,并且在传递给 podman run 。
EnvironmentHost=¶
使用容器内部的主机环境。
Exec=¶
容器的附加参数;这与在 podman run <image> <arguments> 调用。
格式与 [systemd command lines] (https://www.freedesktop.org/software/Systemd/man/Systemd.service.html#Command%20lines),然而,与类似名称的Systemd的使用场景不同 ExecStart= 在环境根文件系统上操作的动词,容器镜像很常见有自己的 ENTRYPOINT 或 CMD 与此交互的元数据。
许多图像的默认期望是图像将包括 ENTRYPOINT 使用默认二进制,此字段将向该入口点添加参数。
另一种描述方式是,它的工作方式与 [args field in a Kubernetes pod] (https://kubernetes.io/docs/tases/inject-data-apply/define-commander-argument-container/#running-a-command-in-a-shell)。
ExposeHostPort=¶
公开一个端口或一系列端口(例如 50-59 ),从宿主到容器。相当于波德曼 --expose 选择。
此密钥可以多次列出。
GIDMap=¶
使用提供的GID映射在新的用户命名空间中运行容器。相当于波德曼 --gidmap 选择。
此密钥可以多次列出。
GlobalArgs=¶
此键包含直接在 podman 和 run 在生成的文件中。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。
它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。
此密钥可以多次列出。
Group=¶
在容器内运行的(数字)GID。这不需要与主机上的GID匹配,可以使用 UserNS ,但如果未指定,则此DID也会在主机上使用。
GroupAdd=¶
将其他组分配给在容器进程中运行的主要用户。还支持 keep-groups 特殊旗帜。相当于Podman --group-add 选项.
HealthCmd=¶
设置或更改容器的运行状况检查命令。值为None将禁用现有运行状况检查。相当于波德曼 --health-cmd 选择。
HealthInterval=¶
设置运行状况检查的间隔。禁用间隔将不会自动设置计时器。相当于波德曼 --health-interval 选择。
HealthLogDestination=¶
设置运行状况检查日志的目标。目录路径,本地或events_logger(本地使用容器状态文件)(默认:本地)相当于Podman --health-log-destination 选项.
local:(默认)HealthCheck日志存储在覆盖容器中。(For例如:$runroot/healthcheck.log)directory:创建一个名为<container-ID>-healthcheck.logHealthCheck日志位于指定目录中。events_logger:日志将使用events_logger设置的日志机制来编写。它还将日志保存到默认目录,以提高具有大量日志的系统上的性能。
HealthMaxLogCount=¶
在HealthCheck日志文件中设置最大尝试次数。(“0”值意味着日志文件中的尝试次数无限)(默认:5次尝试)相当于Podman --Health-max-log-count 选项.
HealthMaxLogSize=¶
设置存储的HealthCheck日志的最大字符长度。(“0”值意味着无限长的日志)(默认:500个字符)相当于Podman --Health-max-log-size 选项.
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文件,并且生成的Systemd服务包含对$name-image.service(or在.image文件中设置的服务名称)。请注意,.image文件必须存在。如果
name图像的结尾是.build,Quadlet将使用相应的.build文件,并且生成的Systemd服务包含对$name-build.service.注:相应的.build文件必须存在。
IP=¶
为容器指定静态IPv4地址,例如 10.88.64.128 。相当于波德曼 --ip 选择。
IP6=¶
为容器指定静态IPv6地址,例如 fd46:db93:aa76:ac37::10 。相当于波德曼 --ip6 选择。
Label=¶
在集装箱上设置一个或多个OCI标签。该格式是一个列表 key=value 项,类似于 Environment 。
此密钥可以多次列出。
LogDriver=¶
设置Podman在运行容器时使用的日志驱动程序。相当于波德曼 --log-driver 选择。
LogOpt=¶
设置Podman在运行容器时使用的log-opp(日志选项)。相当于Podman --log-opt 选项.该密钥可以列出多次。
Mask=¶
指定要用冒号分隔的掩码路径。 Mask=/path/1:/path/2 。无法在容器内访问掩码路径。
Memory=¶
指定容器的内存量。
Mount=¶
将文件系统挂载附加到容器。这相当于波德曼 --mount 选项,通常具有以下形式 type=TYPE,TYPE-SPECIFIC-OPTION[,...] 。
特殊情况:
为
type=volume如果source结束于.volume,由相应的.volume文件已使用。为
type=image如果source结束于.image,由相应的.image文件已使用。
在这两种情况下,生成的Systemd服务将包含对为相应单元生成的服务的依赖性。注:相应的 .volume 或 .image 文件必须存在。
此密钥可以多次列出。
Network=¶
指定容器的自定义网络。它的格式与 --network 选项以 podman run 。例如,使用 host 使用容器中的主机网络,或者 none 不在容器中设置网络。
特殊情况:
如果
name网络的结尾.network一个名为Podman网络systemd-$name,并且生成的systemd服务包含对$name-network.service.这样的网络可以使用$name.networkQuadlet文件。注:相应的.network文件必须存在。如果
name结束于.container,该容器将重新使用由$name.container.生成的Systemd服务包含对$name.service.注:相应的.container文件必须存在。
此密钥可以多次列出。
NetworkAlias=¶
为容器添加网络范围内的别名。这与 --network-alias 选项 podman run .别名可以在DNS解析中将容器分组在一起:例如,设置 NetworkAlias=web 在多个容器上将进行DNS查询 web 解析到具有该别名的所有容器。
此密钥可以多次列出。
NoNewPrivileges= (默认为 false )¶
如果启用,这将禁止容器进程通过setuid和文件功能等获得额外的权限。
Notify= (默认为 false )¶
默认情况下,Podman的运行方式是由容器运行时处理系统启动通知命令。换句话说,当容器运行时启动容器中的子级时,服务被视为已启动。但是,如果容器应用程序支持 [sd_notify] (https://www.freedesktop.org/software/systemd/man/sd_notify.html),然后设置 Notify 设置为True,则将通知详细信息传递给容器,允许容器自己通知启动。
此外,设置 Notify 至 healthy 将推迟启动通知,直到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:containerPort , ip::containerPort , hostPort:containerPort 或 containerPort ,其中主机和集装箱端口的数量必须相同(在范围的情况下)。
如果IP设置为0.0.0.0或根本未设置,则该端口将绑定到主机上的所有IPv4地址上;使用 [::] 用于IPv6。
请注意,不列出主机端口意味着Podman会自动选择一个端口,并且每次调用服务时可能会有所不同。这使得这不是一个有用的选择。分配的端口可以通过 podman port 指挥部。
此密钥可以多次列出。
Pull=¶
设置镜像拉取策略。这相当于波德曼 --pull 选择权
ReadOnly= (默认为 false )¶
如果启用,则使图像为只读。
ReadOnlyTmpfs= (默认为 true )¶
如果ReadOnly设置为 true ,在/dev、/dev/shm、/run、/mp和/var/mp上装载读写tmpfs。
ReloadCmd=¶
添加 ExecReload 线到 Service 运行的 podman exec 在这个容器中使用这个命令。
为了执行重新加载运行 systemctl reload <Service>
互斥时 ReloadSignal
ReloadSignal=¶
添加 ExecReload 线到 Service 运行的 podman kill 该信号将信号发送到主容器进程。
为了执行重新加载运行 systemctl reload <Service>
互斥时 ReloadCmd
Retry=¶
发生HTTP错误时重新尝试图像拉取的次数。相当于Podman --retry 选项.
RetryDelay=¶
重试之间的延迟。相当于Podman --retry-delay 选项.
Rootfs=¶
要用于容器的rootf。RootFS指向系统上的一个目录,该目录包含要在容器中运行的内容。此选项与 Image 选择。
Rootfs的格式与传递给 podman run --rootfs ,因此它也支持覆盖挂载。
注意:在SELinux系统上,rootfs需要正确的标签,默认情况下为unconfined_u:Object_r:tainer_file_t:s0。
RunInit= (默认为 false )¶
如果启用,容器在容器内具有转发信号和获取进程的最小初始化进程。
SeccompProfile=¶
设置要在容器中使用的secopp配置文件。如果未设置,则使用默认的podman配置文件。设置为SON文件的路径名,或 unconfined 禁用secopp过滤器。
Secret=¶
将容器中的Podman密码用作文件或环境变量。这相当于波德曼 --secret 选项,并且通常具有以下形式 secret[,opt=opt ...]
SecurityLabelDisable=¶
关闭容器的标签分离。
SecurityLabelFileType=¶
设置容器文件的标签文件类型。
SecurityLabelLevel=¶
设置容器进程的标签进程级别。
SecurityLabelNested=¶
允许SecurityLabels在容器内运行。这允许分离在容器内创建的容器。
SecurityLabelType=¶
设置容器进程的标签进程类型。
ShmSize=¶
/dev/shm的大小。
这相当于波德曼 --shm-size 选项,并且通常具有以下形式 number[unit]
StartWithPod=¶
创建关联的pod后启动容器。默认为 true .
如果 true ,容器将与pod一起启动/停止/重新启动。
如果 false ,当pod启动时容器不会启动。容器将与pod一起停止。只要容器之前还在运行,重新启动pod也会重新启动容器。
请注意,容器仍然可以手动启动或通过目标启动 [Install] 科.无论如何,pod都会根据需要启动。
StopSignal=¶
发出停止容器的信号。默认值为 SIGTERM 。
这相当于Podman --stop-signal 选项
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,一个名为卷的Podman,systemd-$name用作源,并且生成的Systemd服务包含对$name-volume.service.请注意,.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 pod create equivalent |
|---|---|
AddHost=example.com:192.168.10.11 |
--add-host example.com:192.168.10.11 |
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=example.com |
--dns-search example.com |
GIDMap=0:10000:10 |
--gidmap=0:10000:10 |
GlobalArgs=--日志级别=调试 |
--日志级别=调试 |
主机名=名称 |
--主机名=名称 |
IP=192.5.0.1 |
--IP 192.5.0.1 |
IP6=2001:DB8::1 |
--ip6 2001:DB8::1 |
LABEL=“XYZ” |
--标签“XYZ” |
网络=主机 |
--网络主机 |
网络收件箱=名称 |
--网络别名 |
PodmanArgs=--CPU=2 |
--CPU=2 |
PodName=名称 |
--名称=名称 |
PublishPort=8080:80 |
--发布8080:80 |
服务名称=名称 |
命名系统单位 |
ShmSize=100M |
--SHM-大小=100米 |
SubGIDMap=gtest |
--subgidname=gtest |
SubUIDMap=uTest |
--subuidname=uTest |
Uidmap=0:10000:10 |
--uidmap=0:10000:10 |
UserNS=Keep-id:Uid=200,GID=210 |
--用户Keep-id:uid=200,gid=210 |
卷=/源:/目标 |
--卷/源:/目标 |
中支持的密钥 [Pod] 部分包括:
AddHost=¶
将主机到IP映射添加到/等等/主机。格式是 hostname:ip .
相当于Podman --add-host 选项.该密钥可以列出多次。
ContainersConfModule=¶
加载指定的tainers.conf(5)模块。相当于波德曼 --module 选择。
此密钥可以多次列出。
DNS=¶
为此Pod中的容器设置网络范围的DNS解析程序/名称服务器。
此密钥可以多次列出。
DNSOption=¶
设置自定义的DNS选项。
此密钥可以多次列出。
DNSSearch=¶
设置自定义DNS搜索域。使用 DNSSearch=. 要删除搜索域,请执行以下操作。
此密钥可以多次列出。
GIDMap=¶
使用提供的DID映射在新用户命名空间中创建pod。相当于Podman --gidmap 选项.
此密钥可以多次列出。
GlobalArgs=¶
此键包含直接在 podman 和 pod 在生成的文件中。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。
它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。
此密钥可以多次列出。
HostName=¶
在所有容器内设置pod的主机名。
给定的主机名也会使用容器的主IP地址添加到/等等/hosts文件中(另请参阅 --add-host 选项)。
相当于Podman --hostname 选项.该密钥可以列出多次。
IP=¶
例如,为pod指定静态IPv4地址 10.88.64.128 .相当于Podman --ip 选项.
IP6=¶
为Pod指定静态IPv6地址,例如 fd46:db93:aa76:ac37::10 .相当于Podman --ip6 选项.
Label=¶
在pod上设置一个或多个OCI标签。格式是列表 key=value 物品,类似于 Environment .
此密钥可以多次列出。
Network=¶
指定Pod的自定义网络。它的格式与 --network 选项以 podman pod create 。例如,使用 host 使用Pod中的主机网络,或者 none 不在Pod中设置网络。
特殊情况:
如果
name网络的结尾.network,Quadlet会寻找相应的.network四重奏单位。如果找到,Quadlet将使用单元中设置的网络名称,否则,systemd-$name采用了
生成的Systemd服务包含对其生成的服务单元的依赖性 .network 单位注:对应 .network 文件必须存在。
此密钥可以多次列出。
NetworkAlias=¶
为pod添加网络范围内的别名。这与 --network-alias 选项 podman pod create .别名可以在DNS解析中将容器分组在一起:例如,设置 NetworkAlias=web 在多个容器上将进行DNS查询 web 解析到具有该别名的所有容器。
此密钥可以多次列出。
PodmanArgs=¶
此键包含直接传递到 podman pod create 命令在生成的文件中。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。
它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。
此密钥可以多次列出。
PodName=¶
Podman pod的(可选)名称。如果未指定,默认值与单位同名,但带有 systemd- 前置,即 $name.pod 文件创建一个 systemd-$name Podman pod可避免与用户管理的pod发生冲突。
请注意,Pod和容器不能具有相同的名称。因此,如果设置了PodName,则它不能与任何容器冲突。
PublishPort=¶
公开一个端口或一系列端口(例如 50-59 ),从豆荚到寄主。相当于波德曼 --publish 选择。该格式类似于Podman选项,其形式为 ip:hostPort:containerPort , ip::containerPort , hostPort:containerPort 或 containerPort ,其中主机和集装箱端口的数量必须相同(在范围的情况下)。
如果IP设置为0.0.0.0或根本未设置,则该端口将绑定到主机上的所有IPv4地址上;使用 [::] 用于IPv6。
请注意,不列出主机端口意味着Podman会自动选择一个端口,并且每次调用服务时可能会有所不同。这使得这不是一个有用的选择。分配的端口可以通过 podman port 指挥部。
当使用 host 网络通过 Network=host , PublishPort= 无法使用选项。
此密钥可以多次列出。
ServiceName=¶
默认情况下,Quadlet将通过添加 -pod 四胞胎的名字设置此键将通过指示Quadlet使用提供的名称来覆盖此行为。
注意,名称不应包括 .service 文件扩展名
ShmSize=¶
/dev/shm的大小。
这相当于波德曼 --shm-size 选项,并且通常具有以下形式 number[unit]
SubGIDMap=¶
使用/等/subgid文件中的名称映射在新用户命名空间中创建pod。相当于Podman --subgidname 选项.
SubUIDMap=¶
使用/等/subuid文件中的名称映射在新用户命名空间中创建pod。相当于Podman --subuidname 选项.
UIDMap=¶
使用提供的UID映射在新用户命名空间中创建pod。相当于Podman --uidmap 选项.
此密钥可以多次列出。
UserNS=¶
设置pod的用户命名空间模式。这相当于Podman --userns 选项,通常具有形式 MODE[:OPTIONS,...] .
Volume=¶
在Pod中装载卷。这相当于波德曼 --volume 选项,通常具有以下形式 [[SOURCE-VOLUME|HOST-DIR:]CONTAINER-DIR[:OPTIONS]] 。
如果 SOURCE-VOLUME 开头为 . ,则Quadlet解析相对于单元文件位置的路径。
特殊情况:
如果
SOURCE-VOLUME结束于.volume,Quadlet会寻找相应的.volume四重奏单位。如果找到,Quadlet将使用单位中设置的卷的名称,否则,systemd-$name采用了注:相应的.volume文件必须存在。
生成的Systemd服务包含对其生成的服务单元的依赖性 .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 |
--力(用于 |
日志驱动程序=日志 |
--日志驱动程序日志 |
网络=主机 |
--网络主机 |
PodmanArgs=--注解=键=值 |
--注解=键=值 |
PublishPort=8080:80 |
--发布8080:80 |
SetWorkingDirectory=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执行local或registry指定容器名称的自动更新。
ConfigMap=¶
将Kubernetes ConfigMap YAML路径传递给 podman kube play 通过 --configmap 争论。不像 configmap 参数,则该值只能包含一个路径,但它可以是绝对路径,也可以是单元文件位置的相对路径。
此密钥可能会多次使用
ContainersConfModule=¶
加载指定的tainers.conf(5)模块。相当于波德曼 --module 选择。
此密钥可以多次列出。
ExitCodePropagation=¶
控制SYSTEM D服务的主PID应该如何退出。支持下列值:
all:如果所有容器都已失败,则退出非零(即,退出非零)any:如果任何容器出现故障,则退出非零none:退出零并忽略失败的容器
当前缺省值为 none 。
GlobalArgs=¶
此键包含直接在 podman 和 kube 在生成的文件中。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。
它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。
此密钥可以多次列出。
KubeDownForce=¶
调用时删除所有资源,包括卷 podman kube down 。相当于波德曼 --force 选择。
LogDriver=¶
设置Podman在运行容器时使用的日志驱动程序。相当于波德曼 --log-driver 选择。
Network=¶
指定容器的自定义网络。它的格式与 --network 选项以 podman kube play 。例如,使用 host 使用容器中的主机网络,或者 none 不在容器中设置网络。
特殊情况:
如果
name网络的结尾.network一个名为Podman网络systemd-$name,并且生成的systemd服务包含对$name-network.service.这样的网络可以使用$name.networkQuadlet文件。注:相应的.network文件必须存在。
此密钥可以多次列出。
PodmanArgs=¶
此键包含直接传递到 podman kube play 命令在生成的文件中(就在命令行中YAML文件的路径之前)。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。
它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。
此密钥可以多次列出。
PublishPort=¶
公开一个端口或一系列端口(例如 50-59 ),从容器到宿主。相当于 podman kube play %s --publish 选择。该格式类似于Podman选项,其形式为 ip:hostPort:containerPort , ip::containerPort , hostPort:containerPort 或 containerPort ,其中主机和集装箱端口的数量必须相同(在范围的情况下)。
如果IP设置为0.0.0.0或根本未设置,则该端口将绑定到主机上的所有IPv4地址上;使用 [::] 用于IPv6。
单元文件中指定的已发布端口列表与Kubernetes YAML文件中指定的端口列表合并。如果在两者中指定了相同的容器端口和协议,则优先使用单元文件中的条目
此密钥可以多次列出。
SetWorkingDirectory=¶
设置 WorkingDirectory 中的字段 Service 系统服务单元文件的组。用于允许 podman kube play 以正确解析相对路径。支持的值包括 yaml 和 unit 将工作目录分别设置为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” |
Network DeleteOnStop =true |
添加ExecStopPost以在设备停止时删除网络 |
网络名称=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= (默认为 false )¶
如果启用,则禁用此网络的DNS插件。
这相当于波德曼 --disable-dns 选择权
DNS=¶
为此网络中的容器设置网络作用域的DNS解析器/名称服务器。
此密钥可以多次列出。
Driver= (默认为 bridge )¶
用于管理网络的驱动程序。目前 bridge , macvlan 和 ipvlan 是受支持的。
这相当于波德曼 --driver 选择权
Gateway=¶
定义该子网的网关。如果要提供网关地址,还必须提供子网选项。
这相当于波德曼 --gateway 选择权
此密钥可以多次列出。
GlobalArgs=¶
此键包含直接在 podman 和 network 在生成的文件中。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。
它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。
此密钥可以多次列出。
Internal= (默认为 false )¶
限制此网络的外部访问。
这相当于波德曼 --internal 选择权
IPAMDriver=¶
设置网络的IPAM驱动程序(IP地址管理驱动程序)。目前 host-local , dhcp 和 none 是受支持的。
这相当于波德曼 --ipam-driver 选择权
IPRange=¶
分配一定范围内的容器IP。该范围必须是CIDR表示法中的完整子网或位于 <startIP>-<endIP> 与CIDR子网相比,允许更灵活的范围的语法。Ip-range选项必须与子网选项一起使用。
这相当于波德曼 --ip-range 选择权
此密钥可以多次列出。
IPv6=¶
启用IPv6(双协议栈)网络。
这相当于波德曼 --ipv6 选择权
Label=¶
在网络上设置一个或多个OCI标签。该格式是一个列表 key=value 项,类似于 Environment 。
此密钥可以多次列出。
NetworkDeleteOnStop= (默认为 false )¶
如果设置为 true 当服务停止时网络被删除
NetworkName=¶
Podman网络的(可选)名称。如果未指定,默认值与单位同名,但带有 systemd- 前置,即 $name.network 文件创建一个 systemd-$name Podman网络以避免与用户管理的网络发生冲突。
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 |
--选择“o=XYZ” |
PodmanArgs=--驱动程序=图像 |
--驱动程序=图像 |
类型=类型 |
设备的文件系统类型 |
用户=123 |
--opt uid=123 |
VolumeName=foo |
Podman卷创建Foo |
中支持的密钥 [Volume] 部分包括:
ContainersConfModule=¶
加载指定的tainers.conf(5)模块。相当于波德曼 --module 选择。
此密钥可以多次列出。
Copy= (默认为 true )¶
如果启用,则在第一次运行时会将位于卷装入点的映像内容复制到卷中。
Device=¶
为卷装载的设备的路径。
Driver=¶
指定卷驱动程序名称。当设置为时 image vt.的. Image 还必须设置密钥。
这相当于波德曼 --driver 选择。
GlobalArgs=¶
此键包含直接在 podman 和 volume 在生成的文件中。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。
它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。
此密钥可以多次列出。
Group=¶
用作卷的组的主机(数字)GID或组名
Image=¶
指定卷所基于的图像 Driver 设置为 image 。出于性能和健壮性的原因,建议使用完全限定的映像名称,而不是短名称。
名称的格式与传递给 podman pull 。因此,它支持使用 :tag 或摘要以保证特定的图像版本。
特殊情况:
如果
name图像的结尾是.image,Quadlet将使用相应拉取的图像.image文件,并且生成的Systemd服务包含对$name-image.service(or在.image文件中设置的服务名称)。注:相应的.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- 前置,即 $name.volume 文件创建一个 systemd-$name Podman卷可避免与用户管理的卷发生冲突。
构建单元 [Build]¶
构建文件以 .build 扩展名并包含一个部分 [Build] 描述图像构建命令。生成的服务是一个一次性命令,可确保根据提供的Containerfile和上下文目录在主机上构建图像。生成的构建服务的后续(重新)启动通常会很快完成,因为图像层缓存将跳过未更改的构建步骤。
最小 .build 单位至少需要 ImageTag= 关键,并且其中之一 File= 或 SetWorkingDirectory= 钥匙
使用构建单元允许容器和卷依赖于本地构建的映像。这对于创建容器注册表上不可用的容器镜像,或者用于本地测试和开发来说可能很有趣。
的有效选项 [Build] 如下所示:
[Build] options |
podman build equivalent |
|---|---|
注释=注释=值 |
--注释=注释=值 |
ARCH=AARCH64 |
--ARCH=aarch64 |
AuthFile=/etc/registry/auth.json |
--认证文件=/等/注册表/身份验证.json |
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=example.com |
--dns-search example.com |
环境=foo=bar |
--env foo=bar |
文件=/路径/to/Containerfile |
--文件=/路径/to/Containerfile |
ForceRM=假 |
--force-rm=假 |
GlobalArgs=--日志级别=调试 |
--日志级别=调试 |
Group添加=keep-groups |
--group-add=keep-groups |
图片标签=本地主机/imagesist |
--tag=本地主机/imagination |
标签=标签 |
--label=标签 |
网络=主机 |
--网络=主机 |
PodmanArgs=--pull never |
--拉从不 |
拉动=从不 |
--拉从不 |
= 5 |
--再试=5 |
重新尝试延迟= 10秒 |
--再试延迟= 10秒 |
机密=机密 |
--secret=id=mysecret,SRC=路径 |
设置工作目录=单位 |
设置 |
目标=我的应用程序 |
--目标=我的应用程序 |
TLSVerify=False |
--TLS-Verify=FALSE |
变量=ARM/v7 |
--变量=ARM/v7 |
卷=/源:/目标 |
--卷/源:/目标 |
Annotation=¶
添加图像 注解 (例如,批注= 价值 )到图像元数据。可多次使用。
这相当于 --annotation 选择 podman build .
Arch=¶
初始化要构建的图像的架构(默认为主机的架构)。
这相当于 --arch 选择 podman build .
AuthFile=¶
身份验证文件的路径。
这相当于 --authfile 选择 podman build .
ContainersConfModule=¶
加载指定的tainers.conf(5)模块。相当于波德曼 --module 选择。
此密钥可以多次列出。
DNS=¶
为生成容器设置网络范围的DNS解析程序/名称服务器。
此密钥可以多次列出。
这相当于 --dns 选择 podman build .
DNSOption=¶
设置自定义的DNS选项。
此密钥可以多次列出。
这相当于 --dns-option 选择 podman build .
DNSSearch=¶
设置自定义DNS搜索域。使用 DNSSearch=. 要删除搜索域,请执行以下操作。
此密钥可以多次列出。
这相当于 --dns-search 选择 podman build .
Environment=¶
添加一个值(例如dev = value )到建筑图像。这使用的格式与 [services in systemd] (https://www.freedesktop.org/software/system d/man/system d.exec.html#Environment =)并且可以列出多次。
File=¶
指定包含构建图像的说明的容器文件。以开头的URL http(s):// 允许您指定要下载的远程容器文件。请注意,对于容器文件的给定相对路径,或者使用 http(s):// 网址,您还必须设置 SetWorkingDirectory= 为了使 podman build 为容器文件中指定的资源查找有效的上下文目录。
请注意,设置 File= 字段对于 .build 文件,除非 SetWorkingDirectory (or一 WorkingDirectory 在 Service 组)也已设定。
这相当于 --file 选择 podman build .
ForceRM=¶
始终在生成后移除中间容器,即使生成失败也是如此(默认为真)。
这相当于 --force-rm 选择 podman build .
GlobalArgs=¶
此键包含直接在 podman 和 build 在生成的文件中。它可用于访问生成器不支持的Podman功能。由于生成器不知道这些参数会导致哪些意外交互,因此不建议使用此选项。
它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。
此密钥可以多次列出。
GroupAdd=¶
将其他组分配给在容器进程中运行的主要用户。还支持 keep-groups 特殊旗帜。
这相当于 --group-add 选择 podman build .
ImageTag=¶
指定生成过程成功完成时分配给结果图像的名称。
这相当于 --tag 选择 podman build .
该密钥可以列出多次。当 .build 文件被另一个Quadlet单元引用。
Label=¶
添加图像 标签 (例如,标签= 价值 )到图像元数据。可多次使用。
这相当于 --label 选择 podman build .
Network=¶
处理UTE指令时设置网络名称空间的配置。这与 --network 选项 podman build .例如使用 host 使用主机网络,或者 none 不要建立网络。
特殊情况:
如果
name网络的结尾.network,Quadlet会寻找相应的.network四重奏单位。如果找到,Quadlet将使用单元中设置的网络名称,否则,systemd-$name采用了生成的Systemd服务包含对其生成的服务单元的依赖性.network单位,或在$name-network.service如果.network找不到单位。注意:对应的.network文件必须存在。
此密钥可以多次列出。
PodmanArgs=¶
此键包含直接传递到 podman build 命令(就在命令行中的图像名称之前)。它可用于访问生成器不支持的Podman功能。由于生成器不知道这些参数会导致哪些意外交互,因此不建议使用此选项。
它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。
此密钥可以多次列出。
Pull=¶
设置图像拉取策略。
这相当于 --pull 选择 podman build .
Retry=¶
发生HTTP错误时重新尝试图像拉取的次数。相当于Podman --retry 选项.
RetryDelay=¶
重试之间的延迟。相当于Podman --retry-delay 选项.
Secret=¶
以安全的方式传递Containerfile构建阶段中使用的秘密信息。
这相当于 --secret 选择 podman build 并且通常具有以下形式 secret[,opt=opt ...] .
SetWorkingDirectory=¶
提供上下文(工作目录) podman build .支持的值是路径、URL或特殊键 file 或 unit 将上下文目录设置为来自 File= 钥匙或四重奏的钥匙 .build 分别为单位文件。这使得Quadlet能够解析相对路径。
使用其中一个特殊密钥时 (file 或 unit ), WorkingDirectory 领域 Service Systemd服务单元的组也将相应设置为。或者,用户可以显式设置 WorkingDirectory 领域 Service 集团在 .build 文件.请注意,如果 WorkingDirectory 领域 Service 组是由用户设置的,即使是 SetWorkingDirectory 设置为 file 或 unit .
通过提供URL SetWorkingDirectory= 您可以指示 podman build 克隆Git存储库或下载通过以下方式提取到临时位置的存档文件 podman build 作为构建上下文。请注意,在这种情况下, WorkingDirectory Systemd服务单元的功能没有受到Quadlet的影响。
请注意,必须提供上下文目录 .build 文件,除非 File= 还提供了密钥。
Target=¶
设置要构建的目标构建阶段。跳过目标阶段之后容器文件中的命令。
这相当于 --target 选择 podman build .
TLSVerify=¶
在联系注册处时要求HTTPS和证书验证。
这相当于 --tls-verify 选择 podman build .
Variant=¶
指定要构建的容器镜像的默认体系结构变体。
这相当于 --variant 选择 podman build .
Volume=¶
在生成期间执行Run指令时,将卷装载到容器。这相当于 --volume 选择 podman build ,并且一般具有 [[SOURCE-VOLUME|HOST-DIR:]CONTAINER-DIR[:OPTIONS]] .
如果 SOURCE-VOLUME 开头为 . ,则Quadlet解析相对于单元文件位置的路径。
特殊情况:
如果
SOURCE-VOLUME结束于.volume,Quadlet会寻找相应的.volume四重奏单位。如果找到,Quadlet将使用单位中设置的卷的名称,否则,systemd-$name采用了生成的Systemd服务包含对其生成的服务单元的依赖性.volume单位,或在$name-volume.service如果.volume找不到单位。注意:对应的.volume文件必须存在。
此密钥可以多次列出。
图像单位 [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:最新 |
在解析时使用此名称 |
操作系统=Windows |
--os=Windows |
PodmanArgs=--os=Linux |
--os=Linux |
= 5 |
--再试=5 |
重新尝试延迟= 10秒 |
--再试延迟= 10秒 |
TLSVerify=False |
--TLS-Verify=FALSE |
变量=ARM/v7 |
--变量=ARM/v7 |
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=¶
此键包含直接在 podman 和 image 在生成的文件中。它可用于访问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.tarImageTag=quay.io/podman/stable:latest
OS=¶
覆盖要拉取的映像的操作系统,默认为主机。
这相当于波德曼 --os 选择。
PodmanArgs=¶
此键包含直接传递到 podman image pull 命令在生成的文件中(就在命令行中的图像名称之前)。它可用于访问Podman功能,否则生成器不支持该功能。由于生成器不知道这些参数可能导致哪些意外交互,因此不建议使用此选项。
它的格式是空格分隔的参数列表,可以选择单独转义这些参数,以允许包含空格和其他控制字符。
此密钥可以多次列出。
Retry=¶
发生HTTP错误时重新尝试图像拉取的次数。相当于Podman --retry 选项.
RetryDelay=¶
重试之间的延迟。相当于Podman --retry-delay 选项.
TLSVerify=¶
在联系注册处时要求HTTPS和证书验证。
这相当于波德曼 --tls-verify 选择。
Variant=¶
覆盖容器镜像的默认体系结构变量。
这相当于波德曼 --variant 选择。
四重奏部分 [Quadlet]¶
一些四脚架特定配置在不同的单元类型之间共享。这些设置可以在 [Quadlet] 科.
的有效选项 [Quadlet] 如下所示:
[Quadlet] options |
Description |
|---|---|
默认归属=假 |
禁用对单元的隐式网络依赖性 |
DefaultDependencies=¶
将Quadlet的默认网络依赖项添加到单元(默认为 true ).
当设置为假时,Quadlet将 not 添加依赖项(After=,Wants=)到 network-online.target /podman-user-wait-network-online.service到生成的单元。
请注意,此选项设置在 [Quadlet] 科.的 systemd ` [Unit] '部分有一个名称相同但含义不同的选项。
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.build
[Build]
# Tag the image to be built
ImageTag=localhost/imagename
# Set the working directory to the path of the unit file,
# expecting to find a Containerfile/Dockerfile
# + other files needed to build the image
SetWorkingDirectory=unit
test.container
[Container]
Image=test.build
示例 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
例如 s3fs.volume :
有关更多详细信息,请参阅 [s3fs-fuse] (https://github.com/s3fs-fuse/s3fs-fuse)项目。记得阅读 [FAQ] (https://github.com/s3fs-fuse/s3fs-fuse/wiki/常见问题解答)
注:启用缓存可以大幅加快静态文件/对象的访问和写入时间。
然而,
use_cache是 [UNBOUNDED] (https://github.com/s3fs-fuse/s3fs-fuse/wiki/FAQ#q-how-does-the-local-file-cache-work)!
小心,它将充满通过文件系统访问的s3存储桶上的任何文件。
请记得设置 S3_BUCKET , PATH , AWS_REGION . CACHE_DIRECTORY 应由 [systemd] (https://www.freedesktop.org/software/Systemd/man/latest/Systemd.exec.html#RuntimeDiretory=)
[Service]
CacheDirectory=s3fs
ExecStartPre=/usr/local/bin/aws s3api put-object --bucket ${S3_BUCKET} --key ${PATH}/
[Volume]
Device=${S3_BUCKET}:/${PATH}
Type=fuse.s3fs
VolumeName=s3fs-volume
Options=iam_role,endpoint=${AWS_REGION},use_xattr,listobjectsv2,del_cache,use_cache=${CACHE_DIRECTORY}
# `iam_role` assumes inside EC2, if not, Use `profile=` instead
另请参阅¶
systemd.unit(5) , systemd.service(5) , systemd-analyze(1) , podman-run(1) , podman-network-create(1) , podman-auto-update(1)