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





























































