使用 Watchtower 自动更新 Docker 镜像

  1. Docker Compose 文件
  2. 设置 Watchtower 通知服务
  3. 设置部分 Docker 禁止更新
  4. 推荐阅读

使用 Docker 可以迅速在 VPS 上运行服务,而不用配置和修改环境。Docker 服务的更新通过拉取最新镜像实现,当运行的 Docker 数目多了之后,保持镜像最新就成为了一项琐碎的工作。使用 Watchtower 可以便捷地监控 Docker 服务是否有最新镜像,自动拉取最新镜像、更新服务并删除旧有镜像。

Docker compose 是用于定义和运行多容器 Docker 应用程序的工具。在配置好 docker-compose.yml 文件后,使用 docker compose up -d 即可方便上线服务,我的全部 Docker 服务都使用这一方式部署。

以下是 Watchtower 的 docker-compose.yml 文件设置。

Docker Compose 文件

version: "3.3"

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_DEBUG=true
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_SCHEDULE=0 0 4 * * ?
 # - WATCHTOWER_POLL_INTERVAL=43200

其中,WATCHTOWER_SCHEDULEWATCHTOWER_POLL_INTERVAL 均为设置 Watchtower 运行频次的指令,两个方式任选一个。前者使用 Cron 格式,在固定时间运行;后者的单位为秒 (S),经过固定时间间隔运行。

设置 Watchtower 通知服务

Watchtower 使用 Shutrrr 发送通知。以下为设置 Telegram bot 通知:

- WATCHTOWER_LIFECYCLE_HOOKS=True
- WATCHTOWER_NOTIFICATIONS=shoutrrr
- WATCHTOWER_NOTIFICATION_URL=telegram://bot_token@telegram/?channels=user-id
  • 通过 @BotFather 创建自己的通知机器人,并获取 bot_token
  • 通过 @GetIDs Bot 获取 user-id

推荐 IOS 用户使用 Bark 设置通知 [*]: - WATCHTOWER_NOTIFICATION_URL=

- WATCHTOWER_LIFECYCLE_HOOKS=True
- WATCHTOWER_NOTIFICATIONS=shoutrrr
- WATCHTOWER_NOTIFICATION_URL=bark://:devicekey@host/path

设置部分 Docker 禁止更新

在不希望被 Watchetower 监控更新的 Docker 服务中添加环境变量 [*]

- com.centurylinklabs.watchtower.enable = false

推荐阅读


欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论。

×

喜欢就点赞,疼爱就打赏

//