13.9. systemd を使用したコンテナーの自動更新
podman-auto-update タイマーとサービスを使用して、コンテナーの自動更新をスケジュールします。これにより、手動で操作しなくても、システムは確実にイメージの更新を定期的に確認し、適用します。
Podman を使用したコンテナーの自動更新 セクションで説明したように、podman auto-update コマンドを使用してコンテナーを更新できます。カスタムスクリプトに組み込み、必要に応じて呼び出すことができます。コンテナーを自動更新するもう 1 つの方法は、プリインストールされている podman-auto-update.timer および podman-auto-update.service systemd サービスを使用することです。
podman-auto-update.timer は、特定の日付と時刻で自動更新をトリガーするように設定できます。podman-auto-update.service は、systemctl コマンドによってさらに開始することも、他の systemd サービスによる依存関係として使用することもできます。
その結果、時間およびイベントに基づく自動更新は、個々のニーズやユースケースを満たすためにさまざまな方法でトリガーできます。
podman v4.6 以降では、Quadlets を使用できるようになりました。Quadlets を使用すると、通常の systemd ユニットファイルと同様の形式でコンテナーを実行する方法を記述でき、systemd でコンテナーを実行する際の複雑さを意識せずに済みます。
前提条件
-
container-toolsメタパッケージがインストールされている。
手順
podman-auto-update.serviceユニットファイルを表示します。# cat /usr/lib/systemd/system/podman-auto-update.service [Unit] Description=Podman auto-update service Documentation=man:podman-auto-update(1) Wants=network.target After=network-online.target [Service] Type=oneshot ExecStart=/usr/bin/podman auto-update [Install] WantedBy=multi-user.target default.targetpodman-auto-update.timerユニットファイルを表示します。# cat /usr/lib/systemd/system/podman-auto-update.timer [Unit] Description=Podman auto-update timer [Timer] OnCalendar=daily Persistent=true [Install] WantedBy=timers.targetこの例では、
podman auto-updateコマンドは、毎日、深夜に起動します。システム起動時に
podman-auto-update.timerサービスを有効にします。# systemctl enable podman-auto-update.timersystemdサービスを開始します。# systemctl start podman-auto-update.timer必要に応じて、すべてのタイマーをリスト表示します。
# systemctl list-timers --all NEXT LEFT LAST PASSED UNIT ACTIVATES Wed 2020-12-09 00:00:00 CET 9h left n/a n/a podman-auto-update.timer podman-auto-update.servicepodman-auto-update.timerがpodman-auto-update.serviceを有効化したことが確認できます。