12.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 以降では、Quadlets を使用できるようになりました。Quadlets を使用すると、通常の systemd ユニットファイルと同様の形式でコンテナーを実行する方法を記述でき、systemd でコンテナーを実行する際の複雑さを意識せずに済みます。
前提条件
-
container-toolsメタパッケージがインストールされている。
手順
registry.access.redhat.com/ubi10/ubi-initイメージをもとに、myubiコンテナーを起動します。# podman run --label "io.containers.autoupdate=image" \ --name myubi -dt registry.access.redhat.com/ubi10/ubi-init top bc219740a210455fa27deacc96d50a9e20516492f1417507c13ce1533dbdcd9d必要に応じて、実行中または終了したコンテナーをリスト表示します。
# podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 76465a5e2933 registry.access.redhat.com/10/ubi-init:latest top 24 seconds ago Up 23 seconds ago myubimyubiコンテナーのsystemdユニットファイルを生成します。# podman generate systemd --new --files --name myubi /root/container-myubi.service/usr/lib/systemd/systemにユニットファイルをコピーして root ユーザーとしてインストールします。# cp -Z ~/container-myubi.service /usr/lib/systemd/systemsystemdマネージャー設定をリロードします。# systemctl daemon-reloadコンテナーを起動して、ステータスを確認します。
# systemctl start container-myubi.service # systemctl status container-myubi.serviceコンテナーを自動更新します。
# podman auto-update詳細は、システム上の
podman-generate-systemd(1)およびsystemctl(1)man ページを参照してください。