用 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 仅作为辅助查看
  1. 前置条件
    Debian 已安装 Docker 与 Docker Compose 插件

验证:

docker --version
docker compose version

准备目录:

mkdir -p /opt/wud
cd /opt/wud
  1. 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
  1. Web UI(我只做辅助)
    访问:

http://服务器IP:3000

默认匿名访问,仅用于:

  • 查看哪些容器有新镜像
  • 验证自动更新是否触发
  1. 核心设计:一切由标签决定

因为设置了:

WATCHBYDEFAULT=false

所以:

  • 没有标签的容器 = 完全不受影响
  • WUD 不会“误更新”任何服务

这是它优于 Watchtower 的关键点。

  1. 两个最重要的标签规则

4.1 只监控(不自动更新)

labels:
  - "wud.watch=true"

效果:

  • 出现在 WUD UI
  • 有更新提示
  • 不会自动重启

4.2 监控 + 自动更新(Watchtower 的等价替代)

labels:
  - "wud.watch=true"
  - "wud.trigger.include=docker.auto"

含义很明确:

  • 只有被我点名的容器,才允许自动更新
  1. 示例:让一个 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 -d

WUD 会自动发现,无需重启自身。

  1. 清理旧镜像策略

已启用:

WUD_TRIGGER_DOCKER_AUTO_PRUNE=true

效果等同于:

watchtower --cleanup

只在更新发生后清理旧镜像。

长期运行环境,可额外偶尔执行:

docker image prune -f
  1. 使用建议

低风险工具类容器

wud.watch=true
wud.trigger.include=docker.auto

数据库 / 核心业务 / 网关

wud.watch=true

WUD 的正确用法不是“全自动”,而是“可控自动”。

本文为原创文章,转载请注明出处:
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

标签: none

评论已关闭