2026-05-21 · DockUP / Docker / Telegram Bot / 自托管

DockUP:一个轻量的 Docker 更新提醒工具

DockUP 是一个轻量自托管 Docker 更新提醒工具,默认每 12 小时检测运行中的容器,有更新时通过 Telegram 按钮让你确认更新或忽略。

如果你有几台自托管服务,Docker 容器更新这件事通常会变成两种极端:要么完全手动,想起来才去 docker compose pull;要么交给自动更新工具,镜像一变就直接重建容器。

完全手动的问题是容易忘。完全自动的问题是有点激进:上游镜像偶尔发坏版本,或者某些核心服务不适合无脑更新,出了问题还要回滚。

DockUP 想解决的就是中间这一段:它帮你定时检测更新,但真正更新前会先发 Telegram 按钮,由你点一下确认。

项目地址:https://github.com/shuijiao1/DockUP

它解决什么问题

DockUP 是一个轻量 Docker 更新提醒器,不是完整运维平台。

它的工作方式很简单:

  • 定时检查当前机器正在运行的 Docker 容器;
  • 拉取容器当前使用的镜像标签;
  • 如果镜像 ID 发生变化,说明有新镜像;
  • 给这个容器单独发一条 Telegram 通知;
  • 你点击“更新”,它再重建容器;
  • 你点击“忽略”,这次更新就跳过。

这样既不用每天手动检查,也不会让更新在你不知道的情况下直接发生。

为什么不是全自动更新

Docker 自动更新工具已经有不少,Watchtower 就是很典型的一个。但我更想要的是一个更窄、更直接的工具:

  • 只检测运行中的容器;
  • 只通过 Telegram 通知;
  • 只在点击按钮后更新;
  • 不做 Web 面板;
  • 不做 Slack、邮件、Teams 等一堆通知渠道;
  • 不做复杂白名单、黑名单和调度系统。

对个人自托管来说,很多功能其实用不上。真正高频的需求往往只是:有更新时告诉我,我确认后你再动。

DockUP 就按这个思路做。

Telegram 按钮确认

发现更新后,DockUP 会给每个容器单独发一条消息,消息里有两个按钮:

  • 更新:停止旧容器,用原配置创建并启动新容器;
  • 忽略:编辑原消息,标记本次忽略。

一台机器上如果有多个容器有更新,就会分别收到多条通知。这样比把所有更新塞在一条长消息里更清楚,也方便逐个处理。

启动、重启或更新 DockUP 本体后,也会发送一条测试消息,带两个无操作按钮,用来确认 Bot 和按钮样式正常。

无更新时不会刷 Telegram,只写日志。

更新时会尽量保持原配置

点击更新后,DockUP 会尽量复用旧容器的配置来创建新容器,包括环境变量、挂载、端口、网络、重启策略等 Docker 配置。

大致流程是:

  1. 停止旧容器;
  2. 把旧容器重命名成备份容器;
  3. 用原配置创建新容器;
  4. 启动新容器;
  5. 如果有 healthcheck,就等待健康检查通过;
  6. 成功后删除备份容器;
  7. 按配置清理旧镜像。

如果新容器启动失败,或者健康检查不通过,DockUP 会尝试删除新容器并恢复旧容器。

这不能替代真正的备份和发布流程,但对普通自托管容器来说,至少比简单粗暴地删旧容器重建安全一些。

DockUP 也能更新自己

DockUP 本身也是一个 Docker 容器,所以它也会被纳入检测范围。

比较麻烦的是:如果 DockUP 直接更新自己,更新过程中它会把自己停掉,后续步骤就没法继续执行。

所以 DockUP 更新自己时会启动一个临时 helper 容器,由 helper 去替换 DockUP 本体。这样可以避免“自己杀自己”的问题。

部署方式

推荐使用 Docker Compose。

mkdir -p /opt/dockup && cd /opt/dockup
curl -Lo docker-compose.yml https://github.com/shuijiao1/DockUP/releases/latest/download/docker-compose.yml

准备 .env

TZ=Asia/Shanghai
TG_BOT_TOKEN=123456:your_bot_token_here
TG_CHAT_ID=123456789
CHECK_INTERVAL=12h
CLEANUP=true
SETUP_TEST_MESSAGE=true

然后启动:

docker compose pull
docker compose up -d
docker compose logs -f

启动成功后,Telegram 里应该会收到一条测试消息。如果没有收到,通常优先检查 Bot Token 和 Chat ID。

完整说明见 README:https://github.com/shuijiao1/DockUP

适合哪些场景

DockUP 比较适合:

  • 个人自托管 Docker 服务;
  • 想知道容器镜像有没有更新;
  • 不想完全自动更新;
  • 希望在 Telegram 里逐个确认;
  • 服务数量不多,但希望少一点手工检查。

如果你需要复杂的更新窗口、分组策略、多通知渠道、审计系统、灰度发布或 Kubernetes 编排,那 DockUP 不适合。它就是一个小工具,不打算做成大而全的平台。

使用前要注意

DockUP 需要挂载:

/var/run/docker.sock

这意味着它拥有宿主机 Docker 管理权限。部署时请只给自己信任的 Bot 使用,不要把真实 .env 泄露出去。

另外,点击“更新”前仍然建议判断一下服务风险。数据库、反向代理、监控面板这类核心服务,最好确认自己能接受更新带来的影响。

DockUP 会尽量回滚失败更新,但它不能替代数据备份。

小结

DockUP 的定位很窄:定时检测 Docker 容器更新,有更新就发 Telegram 按钮,点了再更新。

它不像完整自动更新平台那样功能很多,但也正因为功能少,部署和理解都很直接。

如果你想给自己的自托管 Docker 服务加一个轻量更新提醒入口,DockUP 会是一个比较顺手的选择。

仓库地址:https://github.com/shuijiao1/DockUP