简介 什么是 docker-updater ?
docker-updater 是一个开源的、自托管的轻量级 Web UI ,用于管理 Docker 容器的更新。与 Watchtower 一发布新镜像就自动拉取并重启容器不同,
docker-updater 按计划轮询镜像仓库,向用户展示可用的更新,由用户决定何时(甚至是否)更新每个容器。在更新前还可以查看 GitHub 上的发布说明。
主要特点 镜像仓库轮询 :通过 Docker Registry v2 manifest API ( HEAD 请求 + Docker-Content-Digest 响应头)对比本地镜像摘要与仓库摘要,无需实际拉取镜像 多仓库支持 :支持
Docker Hub 、 GHCR ( ghcr.io )、 LinuxServer ( lscr.io )以及任何实现了 Bearer token 挑战的镜像仓库 单容器精细控制 :可逐个更新、延期 7/14/30/90 天或无限期延期,也可随时取消延期
更新日志查看器 :对于发布 org.opencontainers.image.source 标签的镜像,可获取其 GitHub 仓库最近 5 个 Release 实时更新日志 :流式日志弹窗实时显示拉取进度和容器重建状态,刷新页面也能自动重连 推送通知 :首次运行自动生成私有的 ntfy 主题;也可使用自己的 Apprise URL (
ntfy 、 Pushover 、 Discord 、 Slack 等) GitHub 通知(可选) :可选的 Webhook 端点接收任意仓库的 issue 、 PR 、 star 、
push 、 release 事件并转发为推送通知 定时检查 :按配置的时间和时区每日定时检查;通知仅在定时检查时触发,启动和手动检查不发通知 安全重建 :使用 Python Docker SDK ( Watchtower 模式)重建容器,保留所有原始配置:卷、端口、环境变量、网络、重启策略、 capabilities 等 跳过本地构建镜像 :没有 RepoDigests 的容器(本地 Dockerfile 构建)会被自动忽略
持久化状态 :更新历史、延期决定和最后检查时间戳在容器重启后仍然保留 深色 UI :标签式仪表板分为 Updates / Deferred / Up to Date / Unchecked / All 应用场景
家庭服务器用户 :群晖、 Unraid 等 NAS 用户希望集中管理几十个 Docker 容器的更新,但不希望被自动重启打断 生产环境运维 :需要在更新前评估每个容器的影响,避免 Watchtower 式自动更新带来的意外停机 多镜像仓库用户 :同时使用 Docker Hub 、 GHCR 、
LinuxServer 等多个镜像源的用户,希望统一管理 GitHub 项目维护者 :通过 Webhook 接收自己维护的项目的 issue 、 PR 、 star 、 release 等事件推送 谨慎型用户 :每次更新前想先看 GitHub Release 的
Changelog 确认是否有破坏性变更 docker-updater 是一个把"是否更新"的决定权完全交还给用户的 Docker 更新管理工具,填补了 Watchtower 全自动更新和手动 docker pull 之间的空白。
安装 在群晖上以 Docker 方式安装。
该项目为单容器项目,镜像托管在 ghcr.io ,所以只支持
docker cli 和 docker-compose 两种安装方式。
本文写作时, latest 版本对应为 sha-c5a2cdc ;
docker cli 安装 如果你熟悉命令行,可能用
docker cli 更快捷
# 新建文件夹 docker-updater 和 子目录 mkdir -p /volume1/docker/docker-updater/data # 进入 docker-updater 目录 cd /volume1/docker/docker-updater # 运行容器 docker run -d \ --name=docker-updater \ --restart=unless-stopped \ -p 9292:9090 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $( pwd )/data:/app/data \ -e CHECK_TIME=03:00 \ -e TIMEZONE=Asia/Shanghai \ -e DOCKER_HOST=unix:///var/run/docker.sock \ ghcr.io/liquidguru/docker-updater:latest 环境变量说明 :
CHECK_TIME 每日定时检查的时间,格式 HH:MM ,默认 03:00 TIMEZONE 定时检查使用的时区,默认 Australia/Melbourne
NOTIFY_URL 推送通知的 Apprise URL ,可选,不填则自动生成私有 ntfy 主题 DOCKER_HOST Docker socket 路径,默认 unix:///var/run/docker.sock
CHECK_TIME 用于设定每天定时检查更新的时间, 通知只在定时检查时触发 。 TIMEZONE 时区设置,例如 Asia/Shanghai 。 NOTIFY_URL 推荐使用 ntfy 私有主题,格式如
ntfy://ntfy.sh/your-private-topic ;不设置时会自动生成随机主题并显示在仪表板中。 DOCKER_HOST 一般无需修改,保持默认即可。 docker-compose 安装 也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
version: '3.8' services: docker-updater: image: ghcr.io/liquidguru/docker-updater:latest container_name: docker-updater restart: unless-stopped ports: - "9292:9090" volumes: - /var/run/docker.sock:/var/run/docker.sock # 与 Docker 守护进程通信 - ./data:/app/data # 存放状态数据
environment: - CHECK_TIME=03:00 # 每日定时检查时间 - TIMEZONE=Asia/Shanghai # 时区 - NOTIFY_URL= # optional: ntfy://ntfy.sh/your-topic or any Apprise URL - DOCKER_HOST=unix:///var/run/docker.sock # Docker socket 路径 然后通过 SSH 登录到您的群晖,执行下面的命令:
# 新建文件夹 docker-updater 和 子目录 mkdir -p /volume1/docker/docker-updater/data # 进入 docker-updater 目录 cd /volume1/docker/docker-updater # 将 docker-compose.yml 放入当前目录 # 一键启动 docker-compose up -d 运行 在浏览器中访问 http://:9292 即可进入 Web 界面
稍等一会儿,进入 Updates 标签页查看有可用更新的容器
在需要升级的镜像后面点 update 按钮手动触发更新,或先点 What's new? 查看 GitHub Release 说明
会看到升级日志
如果遇到错误,一般情况下应该是网络问题
无论成功还是失败,都有记录
如果确认网络没问题,可以再次尝试
如果希望接收推送通知:
不设置 NOTIFY_URL :首次运行后仪表板顶部会出现绿色横幅,显示自动生成的私有 ntfy 主题,点击 Copy 复制后在手机 ntfy APP 中订阅即可 自定义
NOTIFY_URL :使用任意 Apprise 兼容的 URL,例如: ntfy://ntfy.sh/your-private-topic 、 discord://webhookid/webhooktoken 、 slack://tokenA/tokenB/tokenC 等 注意事项 Docker socket 权限 :挂载 /var/run/docker.sock 相当于赋予容器控制宿主机 Docker 的权限,请仅在受信任的环境中使用。 更新机制是重建而非热更新 :点击
Update 后会停止并删除旧容器,再用相同配置启动新容器,期间该容器提供的服务会短暂中断。生产环境请安排在低峰期。 通知仅定时检查时触发 :手动点 "Check Now" 和启动扫描都不会发送推送通知,避免重启容器时手机被通知刷屏。 时区设置 :记得把 TIMEZONE 改为 Asia/Shanghai (或你所在时区),否则 CHECK_TIME 的执行时刻会按默认的 Australia/Melbourne 计算。 GitHub 通知功能(可选) :如需接收 GitHub Webhook 事件,还需设置
GITHUB_WEBHOOK_SECRET 环境变量(用 openssl rand -hex 32 生成),并将 docker-updater 通过反向代理暴露到公网。 参考文档 liquidguru/docker-updater: A lightweight self-hosted web UI for managing Docker container updates — a manual-approval alternative to Watchtower 地址:https://github.com/liquidguru/docker-updater
docker-updater - GitHub Container Registry 地址:https://github.com/liquidguru/docker-updater/pkgs/container/docker-updater
Apprise Notifications - Notification library supporting 80+ services 地址:https://github.com/caronc/apprise
ntfy - Send push notifications to your phone via PUT/POST 地址:https://ntfy.sh/
@所有人:写文不易,如果你都看到了这里,请点个 赞 和 在看 ,分享给更多的朋友;为确保你能收到每一篇文章,请主页右上角设置星标。