引言

自己服务器上的各种服务我几乎都用对应的docker镜像来运行。方便管理的同时也减少了对系统环境的依赖。然而随着docker镜像越来越多,管理和更新这些docker镜像有时候会非常头痛。特别是当想要更新这些镜像的时候,需要一个一个在docker hub上面来查是否有新的版本可用,非常的浪费时间。WatchTower是一款可以自动更新docker镜像的软件。我并没有选择这款来维护我的docker镜像,因为最新的docker镜像并不一定是稳定的。这款软件并不能满足我的需求。我需要能随时知道我的docker镜像是否有新的版本,然后我自己来选择是否更新我的docker镜像。

经过研究,我发现Diun完美满足我的要求,配合PushOver一起,可以第一时间收到自己docker镜像的更新信息,并且推送到手机,非常的方便。这里我也采用docker来安装Diun。我的理念是尽量docker化,增加系统的可迁移性和维护性。

Diun 简介

Diun 是一款用来监控docker镜像更新的软件。我对它的评价是短小精悍,正中靶心。它能够监控所有运行在系统里的docker镜像的更新情况,如有新版本,它可以以多种方式推送通知。

PushOver 简介

是一款跨平台应用,可让您在 iOS、Android、台式电脑和其他设备上接收实时通知和消息。通过 Pushover,可以将任何推送通知、文本消息和图片等发送到您的设备上。注意,PushOver并不是免费的,但是对于个人用户来说非常换算,一次性付款$5就可以终身免费使用。一个月10000条推送的上限,对于个人用户来说也绝对够了。详细的收费信息可以看这里:https://pushover.net/pricing

Setup 步骤

配置 PushOver

首先需要配置PushOver,可以到对应的APP STORE来下载PushOver应用,并允许PushOver推送。注册账号并登录手机APP,进入settings,能够看到一个PUSHOVER_USER_KEY,这个就是之后我们需要用到的身份码,用来确定这台设备身份,之后会在Diun中设置这个身份码来推送到此设备。

下一步我们进入Pushover dashboard, 选择Create an Application/API Token, 在这里,输入Diun作为自己的APP的名字,当然也可用其他的名字,之后Diun的推送会分类到这个名字名下。完成之后,会得到一个 API Token/Key。记住这个APP密匙,之后我们配置Diun的时候我们需要用到。这个密匙是Diun用的,因为PushOver可以用Curl来配置很多不同的应用,所以我们需要这个特征码来区分是哪一个应用。

安装Diun

这里用到Docker Compose来安装,配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
version: "3.5"

services:
diun:
image: crazymax/diun:latest
network_mode: "bridge"
container_name: diun
volumes:
     - "Your Path:/data" # Change to your own path to save data
     - "/var/run/docker.sock:/var/run/docker.sock"
environment:
- "TZ=America/Chicago" # Change to your own timezone
- "LOG_LEVEL=info"
- "LOG_JSON=false"
- "DIUN_WATCH_WORKERS=20"
- "DIUN_WATCH_SCHEDULE=0 */6 * * *" # Crontab style scheduler, configure it yourself
- "DIUN_PROVIDERS_DOCKER=true"
- "DIUN_PROVIDERS_DOCKER_WATCHBYDEFAULT=true"
- "DIUN_NOTIF_PUSHOVER_TOKEN=your_pushover_token" # configure your pushover token here
- "DIUN_NOTIF_PUSHOVER_RECIPIENT=pushover_recipient" # recipient
restart: always

其中,需要注意的关键点有这些:

  • 自己配置想要存储Diun数据的位置,在volumes中挂在到/data
  • DIUN_WATCH_SCHEDULE 可以自己设置Crontab风格的定时器,用来规定什么时候运行Diun这个应用
  • DIUN_NOTIF_PUSHOVER_TOKEN 填入之前PushOver得到的 API Token/Key
  • DIUN_NOTIF_PUSHOVER_RECIPIENT 填入之前PushOver得到的 PUSHOVER_USER_KEY

Docker Compose启动之后,手机就会收到docker镜像是否有更新的信息推送。

需要测试的话,可以把docker compose配置文件中的DIUN_WATCH_SCHEDULE 配置成每一分钟都检查更新,看是否会收到docker镜像的更新信息的推送。如果你对Crontab定时器格式不是非常书序,这个链接是一个非常好的配置定时器的帮助网站,帮助你来学习和配置你想要的定时规则。当测试完成并且确定可以收到推送通知之后,可以将定时器频率调低,比如我的设置是每6个小时检查一次docker镜像更新并推送通知。

总结

Diun是一款短小精悍,强大的docker镜像更新监控应用,这里我们利用它结合PushOver来定期检查我们的docker镜像的更新信息,如有更新的话,将会推送通知到我们的手机。