作者:略懂的大龙猫
现在的NAS都性能不弱,NAS又是长期开机设备,非常适合部署一些常用容器。本文将详细介绍:适用于NAS的docker容器更新解决方案。
绿联NAS的UGOS自带的docker管理器目前还没有容器更新检测和提醒功能(我建议开发这个功能)。所以我用到了whats-up-docker来检测容器镜像是否有更新。由于whats-up-docker需要映射/var/run/docker.sock,所以必须开启SSH通过命令行安装。
进入“设备管理”点击“调试功能”,点击“开启远程调试功能”,接下来需要手机号接收验证码获得SSH密码(我个人倾向于NAS能获得一个长期的SSH权限)。
然后通过SSH连接NAS,绿联的SSH端口做了修改为922而非默认的22:
然后通过docker run命令安装whats-up-docker,默认访问端口为3000,根据实际情况调整:
docker run -d --name wud
-v "/var/run/docker.sock:/var/run/docker.sock"
-p 3006:3000
fmartinou/whats-up-docker
通过浏览器访问whats-up-docker,在主页就可以看到有多少镜像可以更新。点击进入筛选Update avaliable即可看到可更新的镜像。
顺便说一下whats-up-docker的镜像更新信息还可以在homepage里实时显示,通过homepage的配置文件添加whats-up-docker配置信息
然后就可以实现如下效果(显示容器总数和可更新容器数量):
如果不通过SSH,绿联USOS自带的docker管理器更新镜像可以通过先删除容器,再拉取镜像重新部署的方法更新,但是操作还是优点不够优雅,所以接下来介绍一下通过watchtower更新容器。
用watchtower更新容器只需要一句命令即可,但是我个人不建议用这种方法(毕竟有的容器新旧镜像不兼容,直接升级可能会无法运行,我们也并不需要每次都全部更新所有容器):
docker run -d
--name watchtower
--restart unless-stopped
-v /var/run/docker.sock:/var/run/docker.sock
containrrr/watchtower -c
我更喜欢用一次性命令更新容器,命令最后填写需要更新的容器名称:
docker run --rm
-v /var/run/docker.sock:/var/run/docker.sock
containrrr/watchtower -c
--run-once
komga
你也可以通过加入定时执行参数,让watchtower定时更新指定容器,下面的命令是定时10小时更新nginx和redis
docker run -d
--name watchtower
--restart unless-stopped
-v /var/run/docker.sock:/var/run/docker.sock
containrrr/watchtower -c
--interval 36000
nginx redis
下面的命令是每天的2点更新nginx和redis
docker run -d
--name watchtower
--restart unless-stopped
-v /var/run/docker.sock:/var/run/docker.sock
containrrr/watchtower -c
--schedule "0 0 2 * * *"
nginx redis
如果NAS基于Linux,可以安装1Panel这样的WEB管理工具的话那么更新容器就更简单了。直接点击容器选择升级即可,一些NAS自带docker管理器功能比较完善的话应该也可以这么方便:
欢迎大家补充,我也会继续完善方案!
阅读更多网络存储精彩内容,可前往什么值得买查看