NAME¶
Podman-自动更新-根据容器的自动更新策略自动更新容器
SYNOPSIS¶
podman auto-update [options]
DESCRIPTION¶
podman auto-update 下载新的容器映像并重新启动配置为自动更新的容器。要使用自动更新,容器或Kubernetes工作负载必须在一个系统单元内运行。在成功更新映像之后,使用该映像的容器将通过重新启动它们所在的系统单元进行更新。请参阅 quadlet(5)
关于如何在system d下运行Podman。
若要为自动更新配置容器,必须使用 io.containers.autoupdate
标签或 AutoUpdate
中的字段 quadlet(5)
具有以下两个值之一:
registry
:如果标签存在并设置为registry
,Podman联系到相应的注册表,检查映像是否已更新。标签image
是一种替代方案registry
为了向后兼容而维护。如果本地存储中的摘要与远程映像中的摘要不同,则认为映像已更新。如果必须更新映像,Podman会将其删除并重新启动执行容器的system d单元。注册中心策略要求使用完全限定的镜像引用(例如,quay.io/podman/稳定:最新)来创建容器。这种强制执行对于知道要实际检查和拉入哪个图像是必要的。如果使用了图像ID,Podman将不再知道要检查/提取哪个图像。local
:如果自动更新标签设置为local
,Podman将容器的图像摘要与本地容器存储中的图像摘要进行比较。如果它们不同,则认为本地映像较新,并重新启动SYSTEM D单元。
自动更新和Kubernetes YAML¶
Podman支持Kubernetes工作负载的自动更新。可通过以下方式直接配置自动更新策略 quadlet(5)
或者在Kubernetes YAML中使用下面提到的Podman特定的注释:
io.containers.autoupdate
:“REGISTRY|LOCAL”将自动更新策略应用于所有容器io.containers.autoupdate/$container
:要将自动更新策略应用到的“注册表|本地”$container
仅限io.containers.sdnotify
:“conmon|CONTAINER”将sdtify策略应用于所有容器io.containers.sdnotify/$container
:“conmon|CONTAINER”要将sdtify策略应用到$container
仅限
默认情况下,自动更新策略设置为“已禁用”,sdtify策略设置为“conmon”。
系统单元和定时器¶
Podman出厂时配备了一台 podman-auto-update.service
SYSTEM D单位。此单元由每天午夜触发 podman-auto-update.timer
系统D计时器。如果需要,可以为定制的基于时间的更新更改计时器。该单元还可以由其他系统D单元调用(例如,通过依赖关系树)或通过 systemctl start podman-auto-update.service 。
OPTIONS¶
--authfile = path¶
身份验证文件的路径。缺省值为 ${XDG_RUNTIME_DIR}/containers/auth.json
在Linux上,以及 $HOME/.config/containers/auth.json
在Windows/MacOS上。该文件由创建 podman login 。如果在那里找不到授权状态, $HOME/.docker/config.json
被选中,它是使用 docker login 。
注意:还可以通过设置 REGISTRY_AUTH_FILE
环境变量这可以通过以下方式完成 export REGISTRY_AUTH_FILE=path 。
或者,也可以使用 io.containers.autoupdate.authfile
可以配置容器标签。在这种情况下,Podman将使用指定标签的值。
--dry-run¶
检查新镜像是否可用,但不执行任何拉取操作,也不重启任何服务或容器。这个 UPDATED
字段指示新镜像是否可用,并带有“Pending”。
--format = 格式化¶
更改默认输出格式。这可以是受支持的类型,如‘json’或GO模板。下面列出了GO模板的有效占位符:
Placeholder |
Description |
---|---|
.容器 |
容器的ID和名称 |
.ContainerID |
容器的ID |
.ContainerName |
容器的名称 |
.图像 |
图像的名称 |
.策略 |
容器的自动更新策略 |
.单位 |
系统数据单元的名称 |
.已更新 |
更新状态:真、假、失败 |
--rollback¶
如果在更新映像后重新启动SYSTEM D单元失败,请回滚到使用以前的映像,并在另一次重新启动该单元。默认值为True。
请注意,检测SYSTEM D单元是否出现故障最好由容器通过SDNOTIFY发送就绪消息来完成。这样,重新启动设备将一直等到收到消息或超时生效。否则,即使容器在不久之后出现故障,重新启动SYSTEM D单元也可能成功。
要使容器通过SDNOTIFY发送就绪消息,必须使用 --sdnotify=container
选项(参见Podman-Run(1))。然后,在容器内运行的应用程序可以执行 systemd-notify --ready
当准备好或使用特定编程语言(例如,SD_NOTIFY(3))的SDNOTIFY绑定时。
--tls-verify¶
联系注册处时要求HTTPS并验证证书(默认: true )。如果显式设置为 true ,使用TLS验证。如果设置为 false ,不使用TLS验证。如果未指定,则使用TLS验证,除非目标注册表在 containers-registries.conf(5)
EXAMPLES¶
创建配置为自动更新的Quadlet文件:
$ cat ~/.config/containers/systemd/sleep.container
[Container]
Image=registry.fedoraproject.org/fedora:latest
Exec=sleep infinity
AutoUpdate=registry
通过重新加载系统d用户守护进程,从Quadlet文件生成一个系统d服务:
$ systemctl --user daemon-reload
启动system d服务并确保容器正在运行
$ systemctl --user start sleep.service
$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f8e4759798d4 registry.fedoraproject.org/fedora:latest sleep infinity 2 seconds ago Up 2 seconds systemd-sleep
检查是否有新的映像可通过 --dry-run
:
$ podman auto-update --dry-run --format "{{.Image}} {{.Updated}}"
registry.fedoraproject.org/fedora:latest pending
更新服务:
$ podman auto-update
UNIT CONTAINER IMAGE POLICY UPDATED
sleep.service f8e4759798d4 (systemd-sleep) registry.fedoraproject.org/fedora:latest registry true
另请参阅¶
podman(1) , podman-generate-systemd(1) , podman-run(1) , podman-systemd.unit(5) , sd_notify(3) , systemd.unit(5)