咱们通常能够将一台或多台服务器作为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-failurevolumes:  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 testNotification sent for slack notifier(s)

在Slack中,将收到如下所示的告诉

之后,当DIUN发现有新的镜像公布到镜像仓库后,就会收到相应的告诉,咱们就能够抉择是否进行利用降级。

当咱们为利用应用固定标签的镜像时,咱们能够指定相应的标签来进行查看,如

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

下面的正则指定了须要查看的标签。

总结

这里举荐了一个开源的容器镜像更新告诉工具,同时演示了基于Docker+Slack的集成,更多的应用形式请参考其文档 。

同时公布在 Mengz's Blog