Watchtower 是一款开源工具,专为 Docker 平台设计。它可以监控正在运行中的 Docker 容器,并监视这些容器是否有新版本可用。如果 Watchtower 检测到镜像发布了新版本,它将自动拉取新镜像并使用相同的选项重启容器。从而简化了容器维护的流程,减少手动干预。
使用 Docker Compose 部署 Watchtower 是推荐且灵活的方式,它能更好的管理容器配置。
Docker Compose 部署 Watchtower 操作步骤
创建 Docker Compose 文件
mkdir docker-compose.yml
编辑 docker-compose.yml 文件
services:
watchtower:
image: containrrr/watchtower # 指定Watchtower镜像版本
container_name: watchtower # 定义容器名称
volumes:
- /var/run/docker.sock:/var/run/docker.sock # 挂载Docker Socket,使Watchtower能与Docker守护进程通信
environment:
- 'TZ=Asia/Shanghai' # 设置时区,例如:Asia/Shanghai
- 'WATCHTOWER_POLL_INTERVAL=86400' # 设置轮询间隔,单位秒。默认为86400秒(24小时)
- 'WATCHTOWER_CLEANUP=true' # 更新后自动删除旧镜像,可选
- 'WATCHTOWER_NOTIFICATIONS=email' # 配置通知方式,例如:email, slack, discord等
- 'WATCHTOWER_NOTIFICATION_EMAIL_FROM=sender@example.com' # 设置发送电子邮件地址
- 'WATCHTOWER_NOTIFICATION_EMAIL_TO=recipient@example.com' # 设置接收电子邮件地址
- 'WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.example.com' # 设置发送电子邮件服务器
- 'WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587' # 设置发送电子邮件服务器端口
- 'WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=user' # 设置邮件服务器用户名
- 'WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=password' # 设置邮件服务器密码
restart: unless-stopped # 设置容器重启策略,除非手动停止,否则自动重启
command: --schedule "0 3 * * *" --cleanup nginx hysteria # 定时任务:每天凌晨3点执行更新并删除旧镜像
更多配置选项:
如果您只希望 Watchtower 更新特定的容器,可以在command
中列出这些容器的名称或 ID,用空格分隔。
例如:以上 docker-compose.yml 文件结尾的nginx hysteria
启动 Watchtower 容器
docker compose up -d
验证 Watchtower 运行状态
docker logs watchtower