别再每天打开终端敲 docker pull 了。
你不是运维工程师,只是想让 Nextcloud、Home Assistant 这些自建服务一直用最新版,又不想半夜被通知吵醒去手动拉镜像、重启容器。
其实根本不用写 YAML、不用学 CI/CD,更不用买监控 SaaS——一个不到 200KB 的 Shell 脚本就能接进你现有的 docker-compose 环境里,安静跑在后台。
替代了哪些付费软件
它不替代某款具体收费产品,而是绕开了「持续更新」这件事背后的整套付费逻辑:比如 Datadog 的容器健康监控 + 自动更新告警套餐,年费 300 美元起;或者 Portainer Business 版的批量镜像更新+通知功能,要收订阅费;甚至一些 NAS 厂商(群晖、威联通)对 Docker 镜像自动更新的支持,只开放给付费会员。
你花时间查更新、等拉取、手动 restart,本质上是在为「自动化」买单。
而 dockcheck.sh 把这整件事压成一条命令:它不预拉镜像、不占额外资源、不改你任何配置,只做两件事——告诉你哪些容器该升了,以及按你定的规则(比如跳过测试版、只升七天前发布的镜像)帮你升完。
价格直接砍到零。
核心功能
- 它能自动发现你 docker-compose.yml 里所有服务的镜像是否过期,并且支持按容器名、标签、甚至自定义 URL 列表来判断“新版”是不是真值得升,比如 Home Assistant 的 beta 标签你可能就想跳过,而 nextcloud 的 stable 分支你永远想第一时间跟上。
- 升级过程不暴力重启整个 stack。如果你用的是 master-compose 结构(多个 yml 文件嵌套),它能精准只 up 那个变了的容器,避免牵连其他服务中断。
- 支持开启镜像备份:每次更新前自动 tag 当前镜像,保留最近 N 天的旧版,万一新版本出问题,一行命令就能回滚,不用翻历史记录找 ID。
- 通知不是摆设。它内置 Telegram、Discord、Gotify 等插件接口,还能直接发事件到 Home Assistant,你手机弹窗、桌面小部件、甚至音箱语音播报,全由你自己配。
- 它不碰你没声明的容器。加 -e nextcloud,heimdall 就只管这两个,加 -E watchtower 就让它盯着 watchtower 有没有新版本但不自动升,这种细粒度控制,是多数付费面板都懒得做的。
- 最省心的是“检查但不更新”模式:加 -n 参数,它就安静跑一遍,输出一份干净的待更新清单,适合放进 cron 每天早八点邮件推给你,像一份运维日报,而不是半夜把你叫起来干活。
三步上手
- 打开 GitHub 页面,下载 dockcheck.sh 文件(就一个脚本,不用 clone 整个仓库),保存到你放 docker-compose.yml 的同一目录下;
- 在终端里执行 chmod +x dockcheck.sh,然后运行 ./dockcheck.sh -n 先看它能不能识别出你当前所有容器;
- 确认无误后,加 -y 参数让它自动更新(比如 ./dockcheck.sh -y -e nextcloud),再把这条命令写进系统 crontab,比如每周日凌晨两点跑一次。
项目信息
mag37/dockcheck
GitHub
CLI tool to automate docker image updates. Interactive or unattended with notifications, image backups, autoprune, no pre-pulling and more.
2.5k
Stars
97
Forks
Shell
GPL-3.0
命令行选项也更精细:-C 可临时跳过本地 dockcheck.config 文件,强制走默认策略;-N 能绕过所有检查逻辑,直接模拟一次更新并触发全部通知,用来验证 Telegram Webhook 或 Gotify 推送是否通畅;-I 和 -M 则分别以纯文本和 Markdown 格式输出每个容器对应的发布说明链接,前提是你的 urls.list 文件里已填好对应映射。
它还兼容 Podman 用户,只需切换到社区维护的 fork:sudo-kraken/podcheck,参数和行为几乎一致。
对于 Docker Hub 的拉取频率限制,它本身只做镜像 digest 对比,不触发实际 pull,因此完全不受限;只有你加上 -y 才会真正调用 docker pull。
脚本内建防错机制:比如 -f 强制 stop/start 时,会先检查容器是否已在运行;-R 跳过 recreate 时,会保留原容器状态;-s 包含已停止容器时,更新后自动恢复其停止状态,不会误启服务。
如果你习惯用 Prometheus 监控,-c 参数可将当前各容器镜像年龄、是否可更新等指标导出为 prometheus node_exporter 兼容的 textfile 格式,路径由你指定,无需额外 exporter。
所有功能都通过 shell 实现,没有外部语言依赖,连 jq 都不是必须项,基础 JSON 解析靠 sed/grep 完成,确保在 Alpine、Debian slim 等轻量系统上也能稳定运行。




