【开源】watchducker 一个 Docker 容器镜像自动检查更新工具

WatchDucker 是一个基于 Docker API 的镜像更新检查与自动更新工具,支持标签驱动、定时任务和多平台通知。本文整理了核心特性、安装方式、常用命令、Compose 示例与通知配置,便于快速上手。

简介

WatchDucker 是一个用 Go 编写的 Docker 容器镜像更新检查与自动更新工具。它通过标签驱动与定时任务,让镜像更新更安全、更可控。

特性亮点

  • 🔍 智能检查:自动检测容器镜像是否有新版本
  • 🏷️ 标签驱动:通过 watchducker.update=true 控制更新范围
  • ⏰ 定时执行:支持 cron 表达式
  • 🔄 自动更新:检测后自动重启容器使用新镜像
  • 🚫 灵活控制:可只检查不重启
  • 📢 多平台通知:Telegram / 微信 / 钉钉 / 飞书 / 邮件等 15+ 渠道

快速开始

Docker 镜像

docker pull naomi233/watchducker:latest

二进制安装

到 Releases 下载对应平台二进制: https://github.com/naomi233/watchducker/releases

源码编译

git clone https://github.com/naomi233/watchducker.git
cd watchducker
go build -o watchducker .

常用命令(Docker)

# 检查指定容器一次
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock naomi233/watchducker:latest watchducker --once nginx redis mysql

# 检查所有带更新标签的容器
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock naomi233/watchducker:latest watchducker --label --once

# 检查所有容器,更新后清理悬空镜像
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock naomi233/watchducker:latest watchducker --all --clean --once

# 只更新镜像,不重启容器
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock naomi233/watchducker:latest watchducker --no-restart --once nginx redis

# 标签模式 + 不自动重启
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock naomi233/watchducker:latest watchducker --label --no-restart --once

# 每天凌晨 2 点检查标签容器
docker run --name watchducker -v /var/run/docker.sock:/var/run/docker.sock naomi233/watchducker:latest watchducker --cron "0 2 * * *" --label

直接运行(可执行文件)

watchducker --label --once
watchducker --cron "0 2 * * *" --label
watchducker --label-reversed --once

Docker Compose 示例

services:
  watchducker:
    image: naomi233/watchducker
    container_name: watchducker
    network_mode: bridge
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./push.yaml:/app/push.yaml
    environment:
      - TZ=Asia/Shanghai
      - WATCHDUCKER_LOG_LEVEL=DEBUG
      - WATCHDUCKER_CRON=0 2 * * *
      - WATCHDUCKER_LABEL=true

关键参数一览

  • --all:检查所有容器
  • --label:只检查带 watchducker.update=true 的容器
  • --label-reversed:检查无该标签的容器
  • --cron:定时执行(cron 表达式)
  • --once:只执行一次
  • --clean:更新后清理悬空镜像
  • --no-restart:只更新镜像不重启容器
  • --include-stopped:包含已停止容器
  • --disabled-containers:排除指定容器(逗号分隔)

通知配置(节选)

push.yaml 方式(推荐)

setting:
  push_server: "telegram"
  log_level: "DEBUG"

telegram:
  api_url: "api.telegram.org"
  bot_token: "YOUR_BOT_TOKEN"
  chat_id: "YOUR_CHAT_ID"

环境变量方式

export WATCHDUCKER_SETTING_PUSH_SERVER="telegram,dingrobot"
export WATCHDUCKER_TELEGRAM_API_URL="api.telegram.org"
export WATCHDUCKER_TELEGRAM_BOT_TOKEN="YOUR_BOT_TOKEN"
export WATCHDUCKER_TELEGRAM_CHAT_ID="YOUR_CHAT_ID"

更多细节请看官方 README: https://github.com/naomi233/watchducker

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
CDNDocker技术杂烩网络

HubProxy 自己搭建Docker 和 GitHub 加速代理服务

2025-11-15 15:18:55

计算机网络

【赶紧收藏】不动手建站与动手搭建网站!超详细保姆级过程!纯干货必看!

2022-8-8 22:19:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
搜索