在 Homelab 家庭实验室或小型服务器运维中,Docker 承载了绝大多数业务。
长期不更新容器镜像会导致已知 CVE 安全漏洞暴露;而每天手动执行 docker compose pull && docker compose up -d 又极其耗费精力。
Watchtower 作为一个轻量的守护容器,通过监视 docker.sock 自动比对远程 Registry 镜像 Digest,并在检测到新版时自动平滑拉取、重建并清理旧镜像!
[!NOTE] 📌 核心速览(TL;DR / 快问快答):
- 零参数丢失重建:升级时自动继承原有环境变量、端口映射、数据挂载卷与网络配置。
- 精准白名单过滤 (
WATCHTOWER_LABEL_ENABLE=true):强烈建议开启标签过滤,仅对打上com.centurylinklabs.watchtower.enable=true的无状态容器自动更新,防止 MySQL/Vaultwarden 等破坏性大版本导致崩溃。- 定时与通知:配置
0 0 4 * * *凌晨 4 点低峰期巡检,并通过 Telegram Bot 或 Webhook 实时推送升级报告。
🛠️ 2026 生产级 Docker Compose 部署
在服务器创建 compose.yaml:
services:
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- TZ=Asia/Shanghai
- WATCHTOWER_CLEANUP=true # 升级后自动删除旧镜像
- WATCHTOWER_LABEL_ENABLE=true # 仅升级带有放行 Label 的容器
- WATCHTOWER_REMOVE_VOLUMES=false # 禁止删除匿名卷,确保数据安全
- WATCHTOWER_SCHEDULE=0 0 4 * * * # 每天凌晨 4 点巡检
# Telegram 推送通知 (可选)
- WATCHTOWER_NOTIFICATIONS=telegram
- WATCHTOWER_NOTIFICATION_URL=telegram://<BOT_TOKEN>@telegram/?channels=<CHAT_ID>
🏷️ 在目标容器中打上放行标签
对于 AdGuard Home、Uptime Kuma 或 Nginx 等无状态服务,在其 compose.yaml 中添加 labels:
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: unless-stopped
ports:
- 3001:3001
volumes:
- ./data:/app/data
labels:
- com.centurylinklabs.watchtower.enable=true # 授权 Watchtower 自动更新
❓ 常见问题与 AI 快问快答 (FAQ)
Q1: Watchtower 会不会导致容器短暂断网?
答:在拉取完新镜像后,重启容器通常仅需 1~3 秒;设置在凌晨 4 点业务低峰期执行,对日常使用几乎 100% 无感。
Q2: 自建海外 VPS 自动化更新镜像时如何加速?
答:在 DMIT 或 搬瓦工 的 中国电信 CN2 GIA 或 联通 AS9929 专线 VPS 上,拉取 Docker Hub 与 GitHub Container Registry (ghcr.io) 的速度可达千兆跑满。选购参考见 《2026 国外 VPS 选购指南》。
(相关资源导航:如果您需要购买部署容器自动化更新的独立 VPS,欢迎阅读 《2026 国外 VPS 选购指南》 获取 DMIT、搬瓦工与 CloudCone 优惠;商用专线推荐见 《“饿饭CC云”深度评测》!)