Red Hat Training

A Red Hat training course is available for RHEL 8

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 モジュールがインストールされている。

手順

  1. 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
    bc219740a210455fa27deacc96d50a9e20516492f1417507c13ce1533dbdcd9d
  2. 必要に応じて、実行中または終了したコンテナーをリスト表示します。

    # 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          myubi
  3. myubi コンテナーの systemd ユニットファイルを生成します。

    # podman generate systemd --new --files --name myubi /root/container-myubi.service
  4. /usr/lib/systemd/system にユニットファイルをコピーして root ユーザーとしてインストールします。

    # cp -Z ~/container-myubi.service /usr/lib/systemd/system
  5. systemd マネージャー設定をリロードします。

    # systemctl daemon-reload
  6. コンテナーを起動して、ステータスを確認します。

    # systemctl start container-myubi.service
    # systemctl status container-myubi.service
  7. コンテナーを自動更新します。

    # podman auto-update