使用 watchtower 自动更新 Docker 容器的镜像

本文以在群晖下,使用 docker compose 部署为例:

  1. docker 文件夹下,新建文件夹 watchtower

  2. 创建文件 docker-compose.yml,内容如下,根据需要修改参数:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    services:
    watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    environment:
    - TZ=Asia/Shanghai
    - WATCHTOWER_CLEANUP=true # 更新后移除旧的镜像
    - WATCHTOWER_SCHEDULE=0 0 7 * * * # 设置 cron 定时任务
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock
    restart: unless-stopped

    更多配置项及其环境变量,请参考官方文档

    将文件保存到刚才创建的 docker/watchtower 文件夹里

  3. SSH 连接群晖,挂载到 docker/watchtower,执行命令

    1
    sudo docker-compose up -d

    容器启动后,将按照设定自动检查更新。如检测到某容器的镜像有更新,将下载最新镜像,并自动重启该容器。


Q:我不想某容器被 watchtower 自动更新重启,应该怎么做?

A:在容器运行时添加 Label com.centurylinklabs.watchtower.enable=false 即可。请参见官方文档介绍

这里提供一个 docker-compose.yml 的例子:

1
2
3
4
5
6
services:
qbittorrent:
container_name: qbittorrent
image: linuxserver/qbittorrent
labels:
- com.centurylinklabs.watchtower.enable=false