缘起
这是介绍docker容器的第五篇文章。本系列其他文章链接如下:
- 容器(1):容器相关知识简介——容器化、docker、docker-compose、Kubernetes / K8s等
- 容器(2):docker最佳实践指南——docker-compose和Portainer
- 容器(3):docker最佳实践指南——数据卷volume的管理
- 容器(4):docker最佳实践指南——容器更新、升级和迁移
上一篇文章提到了如何更新或升级容器。我在更新docker容器时发现,其中很多容器都已经两三年没更新了,版本跨越太多,这就导致有些容器没法直接更新。而有些容器则更新不多,可以直接更新。由于各个容器更新频率不同,而且创建的容器优比较多,我不想隔几天就手动去检查一下容器有没有更新可用。于是我就想到了一个问题:有没有工具可以自动监测容器的更新呢?
当然是有的,比如WatchTower,但WatchTower是自动更新容器的工具,我并不想让它自动更新,我只想知道容器有没有更新可用,所以就一直没用。最近,我发现有个叫WUD(What’s Up Docker)的工具可以监测容器的更新,并且简单易用,就打算尝试一下。
前提
- 已安装Docker和docker-compose
- 了解Docker的基本概念和基本用法
- 使用docker-compose管理容器(如果你没有使用docker-compose管理容器,也不想使用docker-compose管理容器,那么本篇文章仅供参考)
WUD(What’s Up Docker)简介
WUD(What’s Up Docker)是一个开源的Docker容器更新监测工具,它可以监测Docker Hub上的容器镜像是否有更新,并且可以通过邮件、Slack等方式通知用户。
WUD安装与使用
安装WUD
WUD的安装十分简单,按照官方文档的说明即可。这里我们使用docker-compose来安装WUD,docker-compose.yml
文件如下:
|
|
启动后在浏览器中访问http://localhost:3000
即可。
创建管理账户
但上述方法安装的WUD是没有管理账户的,在本地访问尚可,但如果想把服务暴露到公网,就需要创建一个管理账户。WUD提供了两种方法来创建管理账户:
- 使用环境变量将用户名和密码传递给WUD容器
- 使用OpenidConnect(OIDC)来创建管理账户
详见[官方文档](https://getwud.github.io/wud/#/configuration/authentications/)。
第一种方法非常简单便捷,我就直接使用了。我们只需要在docker-compose.yml
文件中添加以下环境变量即可:
|
|
其中密码是以hash的形式存储的,我们可以使用hrpasswd
命令来生成密码的hash:
|
|
如果你没有安装htpasswd
命令,可以在这个网站上生成密码的hash。
需要注意的是,生成的hash值以用户名开头,我们只需要取出冒号后面的部分即可。冒号后面的部分可能含有$
符号,所以我们需要用$$
来替换掉$
符号。比如原hash值为$apr1$2c4a3d5e$e0f8b7c6d7f8b7c6d7f8b7c6
,那么我们需要将其替换为$$apr1$$2c4a3d5e$$e0f8b7c6d7f8b7c6d7f8b7c6
。
再重新启动WUD容器,进入浏览器,可以看到如下登录界面:
输入你的用户名和密码就可以登录了,注意输入的是密码,不需要输入hash值。
WUD监测容器更新
通过网页界面可以监测容器的更新状态,登录后可以看到如下界面:
可见WUD检测到了37个容器,其中10个有更新的版本可用。点击进去可用查看详情:
可以看到容器的当前版本号以及最新的版本号,我们可以根据需求来决定是否更新容器。