Skip to content

Docker 容器安全加固:如何用 Watchtower 自动化更新容器且不中断 Web 服务 (2026版)

毛佳国

在 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云”深度评测》!)

上一篇
无缝平替:从 Clash Verge Rev 迁移至 Sing-box 客户端保姆级教程(JSON 配置平滑过渡)
下一篇
从 VLESS-Reality 到 TUIC / Hysteria 2:如何为你的 VPS 选择最适合的 Sing-box 协议?