
crazymax/diunDIUN(Docker Image Update Notifier)是一款轻量级工具,旨在监控Docker镜像(包括Docker Hub、私有仓库、OCI镜像等)的更新状态。当目标镜像有新版本发布时,DIUN会通过配置的通知渠道(如邮件、Slack、***等)发送提醒,帮助用户及时掌握镜像变更,适用于个人开发、企业运维等场景。
latest或v*标签)。node:18-alpine、nginx:alpine),及时了解更新以同步开发环境。bashdocker run -d \ --name diun \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(pwd)/diun.yml:/diun.yml:ro \ -e TZ=Asia/Shanghai \ crazy-max/diun:latest
yamlversion: "3.8" services: diun: image: crazy-max/diun:latest container_name: diun volumes: - /var/run/docker.sock:/var/run/docker.sock - ./diun.yml:/diun.yml:ro - ./data:/data # 存储历史记录 environment: - TZ=Asia/Shanghai - DIUN_LOG_LEVEL=info # 日志级别:debug/info/warn/error - DIUN_WATCH_WORKERS=2 # 并发检查工作线程数 restart: unless-stopped
DIUN的核心配置通过diun.yml文件定义,支持监控规则、通知渠道等详细设置。以下是基础配置示例:
yaml# 全局配置 watch: workers: 2 # 并发检查工作线程数(默认:1) schedule: "0 */6 * * *" # 检查频率(Cron表达式,默认:每天一次) firstCheckNotif: false # 首次检查是否发送通知(默认:false) # 监控规则 watchers: - name: "my-project" images: - "docker.io/library/nginx:alpine" # Docker Hub镜像 - "ghcr.io/crazy-max/diun:latest" # GitHub Container Registry镜像 - "my-private-registry.com/app:v*" # 私有仓库镜像(支持标签通配符) platforms: - "linux/amd64" - "linux/arm64" # 仅监控指定架构的镜像 tags: - pattern: "latest" # 监控标签规则 - pattern: "v[0-9]+.[0-9]+.[0-9]+" # 语义化版本标签(正则表达式) strict: true # 严格匹配模式 # 通知配置 notif: slack: webhookURL: "[***]" # Slack Webhook地址 channel: "#docker-updates" # 目标频道 templateTitle: "🔄 {{ .Image }} has been updated" # 自定义标题模板 *** smtpHost: "smtp.gmail.com" smtpPort: 587 smtpUsername: "***" smtpPassword: "app-password" from: "DIUN <***>" to: ["***"]
除配置文件外,部分核心参数可通过环境变量设置(优先级低于配置文件):
| 环境变量 | 描述 | 默认值 |
|---|---|---|
DIUN_LOG_LEVEL | 日志级别(debug/info/warn/error) | info |
DIUN_WATCH_WORKERS | 并发检查工作线程数 | 1 |
DIUN_WATCH_SCHEDULE | 检查频率(Cron表达式) | 0 0 * * * |
DIUN_DATA_DIR | 数据存储目录(用于历史记录) | /data |
DIUN_NOTIF_SLACK_ENABLED | 是否启用Slack通知 | false |
DIUN支持多种通知渠道,以下为常用渠道的配置要求:
webhookURL(通过Slack应用创建Incoming Webhook获取)。channel(目标频道)、username(发送消息的用户名)、templateTitle/templateBody(自定义模板)。token(*** Bot Token)和chatIDs(目标聊天ID列表)。/getid机器人获取聊天ID。smtpHost)、端口(smtpPort)、认证信息(smtpUsername/smtpPassword)。smtpSSL/smtpTLS控制)。~/.docker/config.json实现:-v ~/.docker/config.json:/root/.docker/config.json:ro)。*/30 * * * *表示每30分钟检查一次)。/data)需持久化存储,避免容器重启后丢失已通知记录。





manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务