luler 一、简介 Diun 是一个用 Go 编写的应用程序,用于监控 Docker 镜像更新并发送通知 可通过多种渠道发送通知,包括:邮件、Gotify、Ntfy、Slack、Webhook 等等 支持接入多种镜像清单提供者,包括:Docker、Kubernetes、Swarm、Nomad、Dockerfile、File 支持配置授权访问各种镜像仓库,主流包括:docker.io、ghcr.io、gcr.io、自建仓库等等 官方文档参考:https://crazymax.dev/diun/ 开源地址参考:https://github.com/crazy-max/diun 该工具的工作原理参考下图: 二、安装与使用 1. 配置启动 Diun 服务 提前安装好Docker、docker-compose软件环境 新建docker-compose.yml配置文件,内容如下: services: diun: image: crazymax/diun:latest command: serve volumes: - "./data:/data" - "/var/run/docker.sock:/var/run/docker.sock" environment: - "TZ=Asia/Shanghai" - "DIUN_WATCH_WORKERS=20" - "DIUN_WATCH_SCHEDULE=0 */6 * * *" #配置定时检测周期 - "DIUN_WATCH_JITTER=30s" - "DIUN_PROVIDERS_DOCKER=true" #启用Docker镜像配置提供者 #这里以邮箱通知配置作为通知配置示例 - DIUN_NOTIF_MAIL_HOST=smtp.qiye.aliyun.com - DIUN_NOTIF_MAIL_PORT=465 - DIUN_NOTIF_MAIL_SSL=true #开启ssl,一般465都需要设为true #- DIUN_NOTIF_MAIL_INSECURESKIPVERIFY=false #- DIUN_NOTIF_MAIL_LOCALNAME= - DIUN_NOTIF_MAIL_USERNAME=postmaster@xxxx.top #- DIUN_NOTIF_MAIL_USERNAMEFILE= - DIUN_NOTIF_MAIL_PASSWORD=xxxx #- DIUN_NOTIF_MAIL_PASSWORDFILE= - DIUN_NOTIF_MAIL_FROM=postmaster@xxxx.top - DIUN_NOTIF_MAIL_TO=xxxx@qq.com labels: - "diun.enable=true" restart: always 执行下面命令运行 docker-compose up -d 2. 启用镜像更新监听(Docker提供者示例) 其他容器运行时,需要增加相应的labels标签,参考如下:监听portainer镜像更新 version: '3' services: redis: image: redis:latest command: redis-server --requirepass 123456 ports: - 6379:6379 restart: always volumes: - ./data:/data labels: - "diun.enable=true" #(必选)启用镜像监听 #- "diun.watch_repo=true" #(可选)监控所有标签 #- "diun.max_tags=10" # (可选)只监控最新的10个标签 #- "diun.include_tags=^\\d+\\.\\d+.*" # (可选)只监控版本号格式的标签,如 6.2, 7.0 等 #- "diun.exclude_tags=rc;beta;alpha" # (可选)排除 rc、beta、alpha 标签 # 其他参数... 3. 监控通知,这里以邮箱通知示例 发送模板可以调整,更多邮箱通知参数配置可参考:https://crazymax.dev/diun/notif/mail/ 邮箱默认模板通知示例截图 三、总结 该工具可以帮助用户提前知晓一些重要容器镜像更新情况,实现提前更新修复、提前体验性能特性 支持Docker快速安装,且非常轻量,可直接在现有Docker环境中应用 支持平台和仓库全面,使用配置简单,通知方式灵活