收起左侧

Docker 定时更新 + 邮件通知方案

3
回复
806
查看
[ 复制链接 ]

43

主题

163

回帖

255

牛值

共建版主

社区上线纪念勋章社区共建团荣誉勋章

2025-5-13 18:14:41 显示全部楼层 阅读模式

Watchtower 是一个开源工具,用于自动更新运行中的 Docker 容器。它通过监听 Docker守护进程和拉取最新镜像,确保你的服务总是运行在最新版本上,并可清理旧镜像节省空间。

🔧 核心功能

  • 🕒 定时检查更新: 支持 cron 格式定时检查(使用 --schedule)
  • 🚀 自动拉取新镜像: 发现有新版本的镜像会自动拉取
  • 🔄 自动重启容器: 使用新镜像重新创建并启动容器
  • 🧹 清理旧镜像: 通过 --cleanup 删除被替换的旧镜像
  • 🔖 标签过滤: 支持 --label-enable 只更新打标签的容器
  • 📦 多容器支持: 可以指定容器名称,或默认更新所有可更新容器
  • 🔒 安全选项: 支持 TLS、通知 webhook、自定义 Docker 主机等

🚀 应用场景

NAS服务器: 保证服务如allinone、IPTV-api、lucky等项目自动更新保持最新。

部署

飞牛 Compose方式部署代码

1️⃣我们需要先创建一个路径,这个路径储存我们的docker-Compose.yml的文件和配置文件

2️⃣打开Docker,Compose新增项目->输入项目名称->设置路径->上传或者创建docker-
compose.yml把下面代码复制进去,点击完成直至构建完成

🐳Compose代码

1️⃣方法一:全部更新

✅如下:每天凌晨 3 点更新全部容器,并自动删除旧镜像


version: '3'

services:
  watchtower:
    image: containrrr/watchtower:latest
    container_name: watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - TZ=Asia/Shanghai
    restart: unless-stopped
    command: --schedule "0 0 3 * * *" --cleanup

2️⃣方法二:指定容器名更新

✅ 假设我们凌晨3点只想更新 **、lucky 这两个容器,我们可以把容器名称追加到command启动命令的最后面,如下面这个例子:


version: '3'

services:
  watchtower:
    image: containrrr/watchtower:latest
    container_name: watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - TZ=Asia/Shanghai
    restart: unless-stopped
    command: --schedule "0 0 3 * * *" --cleanup ** lucky

⚠️ 注意:此方法不能与方法三 --label-enable 一起使用。

飞牛查看容器名:

命令获取容器名:

docker ps --format "table {{.Names}}\t{{.Image}}"

3️⃣方法三:使用标签特性自动更新(⭐️推荐)

这个标签的作用是:只有当要更新的容器打上这个标签时,Watchtower 才会在凌晨3点更新它。需要在 Watchtower 启动命令里加上
--label-enable 来启用这个行为:


# 特性标签
labels:
  - "com.centu**inklabs.watchtower.enable=true"

# Watchtower 启动命令里加上 --label-enable 
version: '3'

services:
  watchtower:
    image: containrrr/watchtower:latest
    container_name: watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - TZ=Asia/Shanghai
    restart: unless-stopped
    command: --schedule "0 0 3 * * *" --cleanup --label-enable

📌 示例自动更新lucky,就需要在lucky部署代码中加入更新特性标签


# 示例
version: '3.8'

services:
  lucky:
    image: ghcr.io/linuxserver/lucky:latest 
    container_name: lucky 
    environment:
      - PUID=1000  
      - PGID=1000
      - TZ=Asia/Shanghai
    volumes:
      - ./config:/config
    ports:
      - 8000:8000
    labels:
      - "com.centu**inklabs.watchtower.enable=true"  # ✔ 启用 Watchtower 更新此容器
    restart: unless-stopped

⚠️ 并不会更新使用特定tag指定版本(如 lucky:1.2.3)的容器,只有 tag 为 latest 或浮动标签的才会自动更新。

✉️带邮件通知

每天凌晨 3 点更新所有容器并通过邮件发送更新报告

本地创建.env 文件内容(放到与 docker-compose.yml 同目录):

📦 不会创建的公众号回复: env 获取网盘下载地址


# 设置时区
TZ=Asia/Shanghai

# Watchtower 邮件通知相关配置
WATCHTOWER_NOTIFICATIONS=email
WATCHTOWER_NOTIFICATION_EMAIL_FROM=watchtower@example.com         # 发件人邮箱
WATCHTOWER_NOTIFICATION_EMAIL_TO=your_email@example.com           # 收件人邮箱
WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.example.com             # SMTP 服务器地址
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=465                     # 端口 465/25,看你用的是 TLS/SSL
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=watchtower@example.com  # SMTP 用户名
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=yourpassword        # SMTP 密码或授权码
WATCHTOWER_NOTIFICATION_EMAIL_DELAY=30                             # 邮件发送延迟(单位:秒)

📌 注意事项:

  • 邮箱发件账户设置的是“授权码”而非登录密码,教程自行百度;
  • Gmail 用户推荐使用 应用专用密码;
  • 阿里云、腾讯云、**云邮箱一般都需要开启 SMTP 服务;
  • 发件邮箱可以和收件邮箱为同一个。

Compose中加入.env,例如:


version: '3'

services:
  watchtower:
    image: containrrr/watchtower:latest
    container_name: watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    env_file:
      - .env    # 调用.env邮件配置文件
    restart: unless-stopped
    command: --schedule "0 0 3 * * *" --cleanup --label-enable

✅ 部署完成之后就会立即执行一遍的,我配置了邮件通知,就会收到消息提醒

结尾

以上几种方法根据个人要求使用,以前飞牛镜像更新是有问题的,现在已经修复了,能通过Watchtower
正常更新镜像,对需要一直保持最新版才好使的项目(肥羊、iptv等)可以使用这个项目自动更新,对于稳定使用并不需要频繁更新的就尽量别更新,能用就行。

更多内容看官方文档

https://containrrr.dev/watchtower/
收藏
送赞
分享
公众号:知新坊

1

主题

94

回帖

0

牛值

初出茅庐

2025-5-14 10:56:57 显示全部楼层

这个文章不错。

3

主题

12

回帖

0

牛值

fnOS系统内测组

社区上线纪念勋章

2025-5-14 11:46:48 显示全部楼层

非常好用.瞭望塔

1

主题

6

回帖

0

牛值

江湖小虾

2025-5-16 12:08:24 显示全部楼层
这玩意没什么用,我部署过几次了,都不会自动更新。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则