用 WUD 替代 Watchtower:构建可控的 Docker 自动更新方案
用 WUD 替代 Watchtower:构建可控的 Docker 自动更新方案
前言:为什么必须替换 Watchtower
Watchtower 官方已于 2025 年 12 月 17 日停止更新,并正式归档其 GitHub 仓库。
这意味着项目将:
- 不再有新功能
- 不再修复安全漏洞
- 代码仓库只读,仅供参考
虽然 现有 Watchtower 实例仍然可以继续运行,但从长期运维角度看,继续依赖一个已归档的基础设施组件,本身就构成风险。
因此,社区开始推荐更活跃的替代方案,例如 Linuxiac 推荐的 WUD(What’s Up Docker),或由 Nicholas Fedor 维护的 Fork 版本。
本文只聚焦 WUD,并以“稳态替代 Watchtower”为目标,而不是盲目自动更新。
目标效果
用 WUD 替代 Watchtower
- 默认不自动更新任何容器
- 只对明确打标签的容器启用监控 / 自动更新
- 定时扫描(每 12 小时)
- 更新后自动清理旧镜像
- Web UI 仅作为辅助查看
- 前置条件
Debian 已安装 Docker 与 Docker Compose 插件
验证:
docker --version
docker compose version准备目录:
mkdir -p /opt/wud
cd /opt/wud- WUD 的 docker-compose
创建 docker-compose-wud.yml:
# version: "3.8"
services:
wud:
image: getwud/wud:latest
container_name: wud
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./store:/store
environment:
- TZ=Asia/Shanghai
# 本机 Docker watcher
- WUD_WATCHER_LOCAL_SOCKET=/var/run/docker.sock
# 关键:默认不监控任何容器
- WUD_WATCHER_LOCAL_WATCHBYDEFAULT=false
# 每 12 小时扫描一次
- WUD_WATCHER_LOCAL_CRON=0 */12 * * *
# 自动更新 + 更新后清理旧镜像
- WUD_TRIGGER_DOCKER_AUTO_PRUNE=true启动:
docker compose -f docker-compose-wud.yml up -d确认日志:
docker logs -n 100 wud正常情况下你会看到:
watchbydefault:false
trigger.docker.auto ... Registering for auto execution
Cron scheduled (0 */12 * * *)
Listening to docker events- Web UI(我只做辅助)
访问:
http://服务器IP:3000
默认匿名访问,仅用于:
- 查看哪些容器有新镜像
- 验证自动更新是否触发
- 核心设计:一切由标签决定
因为设置了:
WATCHBYDEFAULT=false所以:
- 没有标签的容器 = 完全不受影响
- WUD 不会“误更新”任何服务
这是它优于 Watchtower 的关键点。
- 两个最重要的标签规则
4.1 只监控(不自动更新)
labels:
- "wud.watch=true"效果:
- 出现在 WUD UI
- 有更新提示
- 不会自动重启
4.2 监控 + 自动更新(Watchtower 的等价替代)
labels:
- "wud.watch=true"
- "wud.trigger.include=docker.auto"含义很明确:
- 只有被我点名的容器,才允许自动更新
- 示例:让一个 nginx 服务自动更新
services:
web:
image: nginx:latest
container_name: demo-nginx
restart: unless-stopped
ports:
- "8080:80"
labels:
- "wud.watch=true"
- "wud.trigger.include=docker.auto"应用变更:
docker compose up -dWUD 会自动发现,无需重启自身。
- 清理旧镜像策略
已启用:
WUD_TRIGGER_DOCKER_AUTO_PRUNE=true效果等同于:
watchtower --cleanup只在更新发生后清理旧镜像。
长期运行环境,可额外偶尔执行:
docker image prune -f- 使用建议
低风险工具类容器
wud.watch=true
wud.trigger.include=docker.auto数据库 / 核心业务 / 网关
wud.watch=trueWUD 的正确用法不是“全自动”,而是“可控自动”。
本文为原创文章,转载请注明出处:
https://blog.ibytebox.com/archives/TKFPS2tq
用 WUD 替代 Watchtower:构建可控的 Docker 自动更新方案 - iBytebox
前言:为什么必须替换 Watchtower Watchtower 官方已于 2025 年 12 月 17 日停止更新,并正式归档其 GitHub 仓库。 这意味着项目将: 不再有新功能 不再修复安全漏洞 代码仓库只读,仅供参考 虽然 现有 Watchtower 实例仍然可以继续运行,但从长期运维角度
1 post - 1 participant
[](https:///t/topic/1429599) (author: lide)
via - (author: lide)
Invalid media: image
评论已关闭