共计 1866 个字符,预计需要花费 5 分钟才能阅读完成。
咱们通常能够将一台或多台服务器作为 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 发现有新的镜像公布到镜像仓库后,就会收到相应的告诉,咱们就能够抉择是否进行利用降级。
当咱们为利用应用固定标签的镜像时,咱们能够指定相应的标签来进行查看,如
labels:
- 'diun.enable=true'
- 'diun.watch_repo=true'
- 'diun.include_tags=^\d+\.\d+\.\d+$'
下面的正则指定了须要查看的标签。
总结
这里举荐了一个开源的容器镜像更新告诉工具,同时演示了基于 Docker+Slack 的集成,更多的应用形式请参考其文档。
同时公布在 Mengz’s Blog
正文完