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 以降では、Quadlet を使用できるようになりました。Quadlet を使用すると、通常の systemd
ユニットファイルと同様の形式でコンテナーを実行する方法を記述でき、systemd
でコンテナーを実行する際の複雑さを意識せずに済みます。
前提条件
-
container-tools
メタパッケージがインストールされている。
手順
registry.access.redhat.com/ubi9/ubi-init
イメージをもとに、myubi
コンテナーを起動します。# podman run --label "io.containers.autoupdate=image" \ --name myubi -dt registry.access.redhat.com/ubi9/ubi-init top bc219740a210455fa27deacc96d50a9e20516492f1417507c13ce1533dbdcd9d
オプション: 実行中または終了したコンテナーをリスト表示します。
# podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 76465a5e2933 registry.access.redhat.com/9/ubi-init:latest top 24 seconds ago Up 23 seconds ago myubi
myubi
コンテナーの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/system
systemd
マネージャー設定をリロードします。# systemctl daemon-reload
コンテナーを起動して、ステータスを確認します。
# systemctl start container-myubi.service # systemctl status container-myubi.service
コンテナーを自動更新します。
# podman auto-update