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