镜像升级监控
在后台监控容器镜像仓库,当有新版本可用时收到通知。
镜像升级监控让 Dockerman 在后台轮询镜像仓库,当有新镜像版本可用时推送通知。默认情况下它只通知而不触发自动升级,因此你保持控制权。
工作原理
- 你订阅你关心的镜像(按主机、按镜像引用)。
- 后台调度器以可配置的间隔(默认:每 6 小时)运行
image_upgrade_check任务。 - 对于每个订阅的镜像,Dockerman 通过凭证解析器解析出一个仓库凭证,然后比较本地 digest 和远程镜像仓库 digest。模糊的凭证会强制失败 — 检查会报错,而不是猜测。
- 当发现新 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 使用量。
- 添加新订阅后使用立即检查全部按钮获取即时状态,无需等待下次计划运行。
- 升级通知告诉你新版本存在。要实际升级,请使用容器菜单中现有的检查更新和升级操作。