Watchtower——容器自动更新工具

发布于 2023-10-17  373 次阅读


Watchtower——容器自动更新工具

安装

  • docker-cli

    docker run -d \
    --name watchtower \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower
  • docker-compose

    version: "3"
    services:
    watchtower:
      containername: watchtower
      image: containrrr/watchtower
      volumes:
        - /var/run/docker.sock:/var/run/docker.sock

参数解释

  • /var/run/docker.sock:把docker的守护进程映射到容器内,使得容器拥有操作docker的权限

使用

  • 默认会监控所有正在运行的容器

  • 打开自动删除旧镜像选项:在命令后加上--cleanup或者-c

    docker run -d \
      --name watchtower \
      --restart unless-stopped \
      -v /var/run/docker.sock:/var/run/docker.sock \
      containrrr/watchtower \
      --cleanup

    或者

    docker run -d \
      --name watchtower \
      --restart unless-stopped \
      -v /var/run/docker.sock:/var/run/docker.sock \
      containrrr/watchtower -c
  • 指定要更新的容器:在命令后加上要更新的容器名,用空格分隔

    # 指定更新nginx和redis容器名称
    docker run -d \
      --name watchtower \
      --restart unless-stopped \
      -v /var/run/docker.sock:/var/run/docker.sock \
      containrrr/watchtower -c \
      nginx redis
  • 设置更新频率(默认五分钟)

    • 使用--interval或者-i,以秒为单位
    docker run -d \
        --name watchtower \
        --restart unless-stopped \
        -v /var/run/docker.sock:/var/run/docker.sock \
        containrrr/watchtower -c \
        --interval 3600
    • 使用--schedule或者-s,格式为6字段Cron表达式:“秒 分 时 日 月 周"
    docker run -d \
        --name watchtower \
        --restart unless-stopped \
        -v /var/run/docker.sock:/var/run/docker.sock \
        containrrr/watchtower -c \
        --schedule "0 0 2 * * *"
  • 手动更新一次

    docker run --rm \
        -v /var/run/docker.sock:/var/run/docker.sock \
        containrrr/watchtower -c \
        --run-once \
        aria2-pro

    或者

    docker run --rm \
        -v /var/run/docker.sock:/var/run/docker.sock \
        containrrr/watchtower -cR \
        aria2-pro