Docker镜像更新通知器DIUN
什么是 DIUN ?
Docker Image Update Notifier
是一个用Go
编写的CLI
应用程序,可作为单个可执行文件和Docker
映像交付,用于当Docker
映像在Docker registry
中更新时接收通知。
和老苏之前介绍过的 watchtower
不同,DIUN
只是通知,并不会像 watchtower
一样自动更新镜像和容器
文章传送门:watchtower自动化更新docker镜像
准备
原本老苏打算一如既往使用 88
邮件来发送消息,但是要么是 554 sender is rejected
错误
1 | diun | Wed, 24 May 2023 17:17:56 CST ERR Mail notification failed error="gomail: could not send email 1: 554 sender is rejected: 0" image=docker.io/crazymax/diun:latest |
要么是 error=EOF
错误,懒得再换邮箱折腾了
1 | diun | Wed, 24 May 2023 19:14:06 CST ERR Mail notification failed error=EOF image=docker.io/crazymax/diun:latest |
DIUN
还支持不少消息类型,老苏最后选择了用 Gotify
获取 Gotify Token
如果你还不了解、没安装过 Gotify
,可以点下面的传送门
文章传送门:Gotify消息推送系统搭建
安装完成后,新建一个应用,获取到Token
,我们后面推送消息要用到
配置文件 diun.yml
Diun
中有两种不同的方式来定义配置
- 使用环境变量
- 使用配置文件
老苏采用了配置文件方式,具体的参数可以看官方的说明:https://crazymax.dev/diun/config/
这里我们使用最小配置每 6
小时分析一次本地 Docker
实例的所有正在运行的容器,并使用了 gotify
发送消息
1 | db: |
上面有两处要修改
endpoint
:要换成你自己的gotify
的访问地址 ;token
:也要换成你上一步从gotify
获取的Token
;
安装
与容器相关的应用,都需要绑定挂载 /var/run/docker.sock
,包括我们之前安装的 portainer
、watchtower
,Glances
,Netdata
、lazydocker
等。
什么是 /var/run/docker.sock
?
/var/run/docker.sock
是Docker API
的主要入口,简单地说,它是Docker
守护进程(Docker daemon
)默认监听的Unix
域套接字(Unix domain socket
),容器中的进程可以通过它与Docker
守护进程进行通信。
图片来自:https://betterprogramming.pub/about-var-run-docker-sock-3bfd276e12fd
但是群晖的 Docker
管理器并不支持挂载 /var/run/docker.sock
文件,所以这次我们需用命令行来安装
docker cli 安装
如果你熟悉命令行,可能用 docker cli
更快捷
1 | # 新建文件夹 diun 和 子目录 |
docker-compose 安装
将下面的内容保存为 docker-compose.yml
文件
1 | version: "3.5" |
然后执行下面的命令
1 | # 新建文件夹 diun 和 子目录 |
运行
在浏览器中输入 http://群晖IP:8385
,查看 Gotify
消息,当检测到容器有新版本时,会收到信息
参考文档
crazy-max/diun: Receive notifications when an image is updated on a Docker registry
地址:https://github.com/crazy-max/diun/Diun 文档
地址:https://crazymax.dev/diun/alerting system for the publishing of new docker images with DIUN: how have you configurated it for emails message? Have you some examples to optimize mine? I have got a couple of questions… : selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/qbunu2/alerting_system_for_the_publishing_of_new_docker/