DIUN开源的镜像更新通知工具

我们通常可以将一台或多台服务器作为Docker主机,使用容器跑一些开源的工具服务。而往往我们不知道该什么时候这个这些应用有了更新的版本,最近发现了一个开源的工具,可以检查主机上运行的容器的镜像是否有更新,并可以通过集成多种渠道发送更新通知,这款工具就是 DIUN(Docker Image Update Notifier)

DUIN介绍

DUIN是一款使用GO语言编写的命令行工具,可以本地运行,也可以通过容器运行(开发者提供了构建好的镜像 ),当监控的容器镜像在相应的注册表(Registry)中更新时,可以接收到相应的通知。

DUIN支持多种监控配置(Providers):

  • Docker - 分析Docker主机上运行容器的镜像,并检查其更新
  • Podman - 类似Docker,需要Podman以服务方式启动
  • Kubernetes - 分析Kubernetes集群中的Pods,检查pod使用的镜像
  • Swarm - 分析Swarm集群中服务使用的镜像
  • Nomad - 类似Docker,分析Nomad引擎运行的镜像
  • Dockerfile - 分析Dockerfile中引用的镜像
  • File - yaml格式的配置文件,直接配置需要检查的镜像信息

DUIN支持集成多种通知渠道,例如 Discord, Slack,Matrix,Telegram 以及 Webhook 等。

DUIN使用示例

这里将演示在Docker主机上使用Docker Compose来运行duin服务,并集成Slack,将通知发送到相应的频道。

docker-compose.yml :

services:
  diun:
    image: crazymax/diun:latest
    container_name: diun
    hostname: home200-diun
    command: serve
    volumes:
      - diundata:/data
      - "/var/run/docker.sock:/var/run/docker.sock"
    environment:
      - "TZ=Asia/Shanghai"
      - "LOG_LEVEL=info"
      - "LOG_JSON=false"
      - "DIUN_WATCH_WORKERS=20"
      - "DIUN_WATCH_SCHEDULE=0 */6 * * *"
      - "DIUN_WATCH_JITTER=30s"
      - "DIUN_PROVIDERS_DOCKER=true"
      - "DIUN_PROVIDERS_DOCKER_WATCHBYDEFAULT=true"
      - "DIUN_NOTIF_SLACK_WEBHOOKURL=https://hooks.slack.com/services/xxxxxxxxxxxxx"
    restart: on-failure

volumes:
  diundata:

上面的环境变量中

  • DIUN_WATCH_SCHEDULE=0 */6 * * * 指定每6小时做一次检查
  • DIUN_PROVIDERS_DOCKER=true 指定使用Docker Provider,因此需要绑定 /var/run/docker.sock:/var/run/docker.sock
  • DIUN_PROVIDERS_DOCKER_WATCHBYDEFAULT=true 指定默认检查当前Docker环境中运行的所有容器的镜像,如果该值设置为 false,则在运行需要检查镜像的容器时,需要添加标签 diun.enable=true
  • DIUN_NOTIF_SLACK_WEBHOOKURL= 指定了发现更新时,将通知发送到Slack的频道,配置的值只需要在Slack的某个频道中添加一个Incoming Webhook应用即可

启动更多的配置,可参考文档

启动容器,可进入容器进行通知测试

➜  docker compose exec diun sh
/ # diun notif test
Notification sent for slack notifier(s)

在Slack中,将收到如下所示的通知

diun-slack-notify

之后,当DIUN发现有新的镜像发布到镜像仓库后,就会收到相应的通知,我们就可以选择是否进行应用升级。

当我们为应用使用固定标签的镜像时,我们可以指定相应的标签来进行检查,如

  labels:
    - 'diun.enable=true'
    - 'diun.watch_repo=true'
    - 'diun.include_tags=^\d+\.\d+\.\d+$'

上面的正则指定了需要检查的标签。

总结

这里推荐了一个开源的容器镜像更新通知工具,同时演示了基于Docker+Slack的集成,更多的使用方式请参考其文档

同时发布在 Mengz's Blog

寻找人生的意义!

74 声望
57 粉丝
0 条评论
推荐阅读
制作容器镜像的最佳实践
这篇文章主要是我日常工作中的制作镜像的实践, 同时结合我学习到的关于镜像制作的相关文章总结出来的. 包括通用的容器最佳实践, java, nginx, python 容器最佳实践. 最佳实践的目的一方面保证镜像是可复用的, 提...

东风微鸣云原生2阅读 642

Cert Manager 申请SSL证书流程及相关概念-三
Issuers 和 ClusterIssuers 是 Kubernetes CRD,代表证书颁发机构(CA),能够通过兑现证书签名请求来生成签名证书。所有 cert-manager 证书都需要一个被引用的签发者,该签发者处于准备就绪的状态,可以尝试兑现...

东风微鸣云原生阅读 1.3k

使用 Bitnami Helm 安装 Kafka
服务器端 K3S 上部署 Kafka ServerKafka 安装📚️ Quote:charts/bitnami/kafka at master · bitnami/charts (github.com)输入如下命令添加 Helm 仓库: {代码...} 🔥 Tip:tkemarket 镜像没有及时更新,建议使用 bitn...

东风微鸣云原生阅读 1.3k

Cert Manager 申请SSL证书流程及相关概念-二
cert-manager 可以用来从使用 ACME 协议的 CA 获得证书。ACME 协议支持各种 challenge 机制,用来证明一个域名的所有权,以便为该域名签发有效的证书。

东风微鸣云原生阅读 1.2k

从日志来探究Dapr源码-Dapr runtime的启动过程
(如何在k8s集群初始化dapr,如何跑demo,请参照文档)以上,即为demo镜像完整的启动日志。接下来,我们来尝试根据启动日志,逐步分析dapr runtime在启动过程中都做了哪些工作。

Mr_Black阅读 1.2k

封面图
一种简洁又不失优雅的工作流:极狐 flow
我们在日常开发工作中提到的 Workflow 通常是指通过 Git(版本控制工具)实现的分布式版本控制(distributed revision control),它允许多名软件开发者,在不同的网络环境下,参与同一个软件开发项目。

极狐GitLab阅读 939

封面图
KaiwuDB 持续集成
一、Devops介绍DevOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。可以把DevOps看作开发(软件工程)、技术运营和质量...

KaiwuDB阅读 938

封面图

寻找人生的意义!

74 声望
57 粉丝
宣传栏