Dockerman 文档
Homelab

镜像升级监控

在后台监控容器镜像仓库,当有新版本可用时收到通知。

镜像升级监控让 Dockerman 在后台轮询镜像仓库,当有新镜像版本可用时推送通知。默认情况下它只通知而不触发自动升级,因此你保持控制权。

工作原理

  1. 你订阅你关心的镜像(按主机、按镜像引用)。
  2. 后台调度器以可配置的间隔(默认:每 6 小时)运行 image_upgrade_check 任务。
  3. 对于每个订阅的镜像,Dockerman 通过凭证解析器解析出一个仓库凭证,然后比较本地 digest 和远程镜像仓库 digest。模糊的凭证会强制失败 — 检查会报错,而不是猜测。
  4. 当发现新 digest 时,Dockerman 通过你配置的通知渠道发送一条聚合通知,并写入历史游标,让下一次运行从本次结束的位置继续。

订阅镜像

打开容器的操作菜单(与检查更新升级相同的下拉菜单),点击监控升级

订阅以主机和镜像引用为键,因此它会在容器重建后保留。

打开 Compose 技术栈的溢出菜单,点击监控所有镜像升级。这会一次性订阅技术栈中的所有镜像。

要稍后取消订阅单个镜像,请使用专门的监控页面。

镜像升级监控页面

专门页面在一个地方显示所有你的订阅。

顶部栏:

  • 检查间隔下拉框 — 设置调度器运行的频率(直接写入调度器任务,因此只有一个真实来源)
  • 默认渠道 — 选择哪些通知渠道接收升级通知
  • 立即检查全部 — 触发所有订阅的立即检查

主表格:

描述
镜像镜像引用(例如 jellyfin/jellyfin:latest
容器此主机上使用此镜像的容器
状态当前检查状态(见下文)
上次检查上次检查运行的时间及发现的内容
操作删除订阅、触发手动检查

点击行可打开历史抽屉,显示每次过去的检查,包括时间戳、digests 以及是否发送了通知。

状态

状态含义
unknown尚未运行检查
up_to_date本地和远程 digests 匹配
upgrade_available在镜像仓库上发现了更新的 digest
watchtower_managed使用此镜像的所有容器都有 Watchtower enable=true 标签,因此 Dockerman 将管理权交给 Watchtower
orphaned此主机上没有运行中的容器使用此镜像(例如技术栈已被删除)
error检查失败(镜像仓库不可达、认证错误、速率限制等)

通知消息

当单次检查运行中发现一个或多个升级时,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 使用量。
  • 添加新订阅后使用立即检查全部按钮获取即时状态,无需等待下次计划运行。
  • 升级通知告诉你新版本存在。要实际升级,请使用容器菜单中现有的检查更新升级操作。