14.8. 使用 Podman 自动更新容器
podman auto-update 命令允许您根据自动更新策略自动更新容器。当容器镜像在注册中心中被更新时,podman auto-update 命令会更新服务。要使用自动更新,必须使用 --label "io.containers.autoupdate=image" 标签创建容器,并在 podman generate systemd --new 命令生成的 systemd 单元中运行。
Podman 会搜索 "io.containers.autoupdate" 标签设为 "image" 的正在运行的容器,并与容器注册中心进行通信。如果镜像已更改,Podman 会重启对应的 systemd 单元来停止旧容器,并使用新镜像创建新容器。因此,容器、其环境和所有依赖项都会被重启。
从 Podman v4.6 开始,您可以使用描述如何以类似于常规 systemd 单元文件的格式运行容器的 Quadlets,并在 systemd 下隐藏运行容器的复杂性。
先决条件
-
container-tools模块已安装。
流程
启动基于
registry.access.redhat.com/ubi8/ubi-init镜像的myubi容器:podman run --label "io.containers.autoupdate=image" \ --name myubi -dt registry.access.redhat.com/ubi8/ubi-init top
# podman run --label "io.containers.autoupdate=image" \ --name myubi -dt registry.access.redhat.com/ubi8/ubi-init top bc219740a210455fa27deacc96d50a9e20516492f1417507c13ce1533dbdcd9dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:列出正在运行或已退出的容器:
podman ps -a
# podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 76465a5e2933 registry.access.redhat.com/8/ubi-init:latest top 24 seconds ago Up 23 seconds ago myubiCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为
myubi容器生成一个systemd单元文件:podman generate systemd --new --files --name myubi
# podman generate systemd --new --files --name myubi /root/container-myubi.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将单元文件复制到
/usr/lib/systemd/system中,以便以 root 用户身份安装它:cp -Z ~/container-myubi.service /usr/lib/systemd/system
# cp -Z ~/container-myubi.service /usr/lib/systemd/systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新载入
systemd管理器配置:systemctl daemon-reload
# systemctl daemon-reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动并检查容器的状态:
systemctl start container-myubi.service systemctl status container-myubi.service
# systemctl start container-myubi.service # systemctl status container-myubi.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 自动更新容器:
podman auto-update
# podman auto-updateCopy to Clipboard Copied! Toggle word wrap Toggle overflow