Dockerman Docs
Homelab

イメージアップグレード監視

バックグラウンドでコンテナイメージレジストリを監視し、新しいバージョンが利用可能になったときに通知を受け取ります。

イメージアップグレード監視により、Dockermanはバックグラウンドでレジストリをポーリングし、新しいイメージバージョンが利用可能になったときに通知をプッシュできます。デフォルトでは通知のみで自動アップグレードはトリガーしませんので、制御権はあなたにあります。

仕組み

  1. 重要なイメージを購読します(ホストごと、イメージ参照ごと)。
  2. バックグラウンドスケジューラは設定可能なインターバル(デフォルト:6時間ごと)でimage_upgrade_checkタスクを実行します。
  3. 購読された各イメージについて、Dockerman は 認証情報リゾルバ を介してレジストリ認証情報を解決し、その後ローカルの digest をリモートレジストリの digest と比較します。あいまいな認証情報は fail-closed となり、推測する代わりにチェックがエラーになります。
  4. 新しい digest が見つかったとき、Dockerman は設定された通知チャンネルを通じて単一のバッチ通知を送信し、次の実行が前回の続きから始まるよう履歴カーソルを書き込みます。

イメージの購読

コンテナのアクションメニュー(更新を確認アップグレードがあるのと同じドロップダウン)を開き、アップグレードを監視をクリックします。

購読はホストとイメージ参照をキーにしているため、コンテナの再構築後も存続します。

Composeスタックのオーバーフローメニューを開き、すべてのイメージのアップグレードを監視をクリックします。これにより、スタック内のすべてのイメージが一度に購読されます。

後で個別のイメージの購読を解除するには、専用の監視ページを使用してください。

イメージアップグレード監視ページ

専用ページには、すべての購読が一箇所に表示されます。

トップバー:

  • チェック間隔ドロップダウン — スケジューラの実行頻度を設定します(スケジューラタスクに直接書き込むため、真の情報源は一つです)
  • デフォルトチャンネル — アップグレード通知を受信する通知チャンネルを選択します
  • 今ですべてチェック — すべての購読の即座チェックをトリガーします

メインテーブル:

カラム説明
イメージイメージ参照(例:jellyfin/jellyfin:latest
コンテナこのホストでこのイメージを使用しているコンテナ
ステータス現在のチェックステータス(下記参照)
最終チェック最後のチェックが実行された時刻とその結果
アクション購読の削除、手動チェックのトリガー

行をクリックすると、タイムスタンプ、digest、通知が送信されたかどうかを含む過去のすべてのチェックを示す履歴ドロワーが開きます。

ステータス状態

ステータス意味
unknownまだチェックが実行されていません
up_to_dateローカルとリモートのdigestが一致します
upgrade_availableレジストリで新しいdigestが見つかりました
watchtower_managedこのイメージを使用するすべてのコンテナにWatchtowerのenable=trueラベルがあるため、DockermanはWatchtowerに委譲します
orphanedこのホストで実行中のコンテナがこのイメージを使用していません(例:スタックが削除されました)
errorチェックが失敗しました(レジストリ到達不能、認証エラー、レート制限など)

通知メッセージ

単一のチェック実行で1つ以上のアップグレードが見つかったとき、Dockermanは単一の集約メッセージを送信します:

タイトル: prod-nasで3つのイメージ更新が利用可能

本文:
- jellyfin/jellyfin:latest -> a3f2e1 (1コンテナ: jellyfin)
- redis:7-alpine -> 8c91b4 (2コンテナ: cache, sessions)
- grafana/grafana:latest -> 5e44aa (1コンテナ: grafana)

Dockermanを開く: dockerman://

deep linkをクリックするとDockermanのメインウィンドウが開きます。

通知クールダウン

通知はdigestベースです:Dockermanは通知した最後のdigestを記録します。リモートのdigestが再度変更されたときのみ新しい通知を送信します。すべてのコンテナが通知されたdigestに追いついたら、クールダウンはリセットされ、次のレジストリ更新で新しい通知がトリガーされます。

Watchtowerとの共存

既にWatchtowerを実行している場合、Dockermanはコンテナ上のcom.centurylinklabs.watchtower.enable=trueラベルを検出し、適切に処理します:

  • すべてのコンテナにラベルあり: 購読はwatchtower_managedステータスを表示し、沈黙します。
  • 混在(一部にラベルあり、一部になし): DockermanはWatchtower管理コンテナをフィルタリングし、残りについてのみ通知します。
  • ラベルなし: Dockermanはすべてのコンテナを通常通り処理します。

Dockermanは明示的なenable=trueラベルのみを認識します。Watchtowerがデフォルトモード(ラベルなしですべてを監視)で実行されている場合、Dockermanは検出しません。その場合、両方のツールから重複した通知を受信する可能性があります。

レジストリレート制限

Dockermanは単一の実行内でイメージ参照ごとにチェックを重複排除するため、同じイメージはいくつのコンテナが使用していても一度だけクエリされます。レジストリがRetry-Afterヘッダーを返したとき、Dockermanはそれを尊重します。ヘッダーがない場合、15分のデフォルトバックオフが適用されます。バックオフ中の購読は、次の再試行がいつ行われるかの注記と共にerrorステータスを表示します。

購読の解除

イメージアップグレード監視ページから購読を削除します。削除されると、そのホスト上のそのイメージに対してこれ以上のチェックや通知は送信されません。

ヒント

  • 最も重要な3〜5のイメージ(メディアサーバー、データベース、リバースプロキシなど)の購読から始めてください。
  • 特定の理由がない限り、デフォルトの6時間間隔を維持してください。短い間隔はレジストリAPIの使用を増加させます。
  • 新しい購読を追加した後、今ですべてチェックボタンを使用して、次のスケジュール実行を待たずに即座にステータスを取得してください。
  • アップグレード通知は新しいバージョンが存在することを伝えます。実際にアップグレードするには、コンテナメニューの既存の更新を確認アップグレードアクションを使用してください。