飞牛 fnos 使用docker部署 Watchtower 自动更新 Docker 容器
Watchtower 简介
Watchtower 是一款开源的 Docker 容器管理工具,主要功能为自动更新运行中的 Docker 容器,支持自动拉取镜像并更新容器、配置邮件通知以及定时执行容器更新任务。
用 compose 搭建 Watchtower 的步骤
- 新建文件夹:在任意位置创建一个
watchtower
文件夹,用于存放docker-compose.yaml
文件。
- 新增项目:使用 docker 的 compose 方式构建,点击新增项目。
- 创建项目:
- 输入项目名称,路径选择刚刚创建的
watchtower
文件夹,点击创建。 - 将相应代码拷贝进
docker-compose.yml
文件(创建项目后立即启动打钩)
代码分为带邮箱通知版本和不带邮箱通知版本,以下分别介绍: - 带邮箱通知版本:
- 输入项目名称,路径选择刚刚创建的
version: '3'
services:
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
environment:
- WATCHTOWER_NOTIFICATIONS=email # 启用邮件通知
- WATCHTOWER_NOTIFICATION_EMAIL_FROM=xxxx@163.com # 发件人邮箱
- WATCHTOWER_NOTIFICATION_EMAIL_TO=xxxx@qq.com # 收件人邮箱
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.163.com # 邮件服务器地址
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587 # 邮件服务器端口
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=xxxx@163.com # 邮箱
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=shydihdlneq # 邮件服务器密码
- WATCHTOWER_NOTIFICATION_EMAIL_DELAY=30 # 邮件通知延迟,单位:秒
volumes:
- /var/run/docker.sock:/var/run/docker.sock # 访问 Docker 守护进程
restart: unless-stopped # 自动重启容器
command: --schedule "0 3 * * *" --cleanup # 每天凌晨 3 点执行更新,删除旧镜像,并发送通知
- **不带邮箱通知版本**:
version: '3'
services:
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock # 访问 Docker 守护进程
restart: unless-stopped # 自动重启容器
command: --schedule "0 3 * * *" --cleanup # 每天凌晨 3 点执行更新,并删除旧镜像
注意事项:
- 运行报错的,请在浏览器打开文章后再复制代码。
- 邮件通知请根据自己的邮箱配置,收件人和发件人可以是同一个邮箱,代码中设置的是每天凌晨 3 点执行更新(通过
--schedule "0 3 * * *"
来定义任务计划,其中第一位 0 表示分钟,第二位 3 表示小时(24 小时制),第三位*
表示日,第四位*
表示月,第五位*
表示星期),如有其他时间需求可自行修改。--cleanup
表示更新后删除旧镜像,释放存储空间。
后续操作及其他提示
-
点击完成后,等待构建完成,部署完成之后会立即执行一遍(若配置了邮件通知,就会收到消息提醒)。
-
查看运行日志,若镜像拉取不下来,可以试着换换镜像源(可参考“飞牛 解决 Docker 无法拉取镜像的问题”)。
-
其他配置参数可查看官方文档:https://containrrr.dev/watchtower/arguments/。