折腾笔记

折腾笔记

如何优雅的使用一条命令更新群晖docker容器-Watchtower教程

2022-05-05

前言

群晖也用了很长一段时间了,群晖的docker是折腾的灵魂之一,也让群晖有了更多的可能性,我本身也搭建了很多docker容器,之前也写过了很多文章,但是群晖容器更新一直是一个麻烦问题,需要重新映射文件夹配置端口等,虽然网络上搜索群晖更新docker有很多教程,但是要不已经年久失效,要不不够详细,经过一段时间的折腾,对于Watchtower这个自动化容器更新程序非常喜欢。本篇文章将记录如果部署Watchtower和使用它更新容器

脚本解析

为了容器和服务的安全这里我只贴上一个适用于大部分人的脚本,想实现更多玩法的请查看Watchtower官方文档。

下面的脚本将实现下面效果:使用群晖计划任务来执行脚本,手动运行计划以后,将自动创建一个名称为 watchtower的容器,容器会执行下面操作拉取emby-embyserver1最新的镜像,然后使用相同的配置去更新emby-embyserver1容器 emby-embyserver1 容器更新成功以后,会自动删除本次运行的Watchtower容器。

注意!!!最后一行的emby-embyserver1为需要更新容器的名称,多个容器之前用空格隔开,请按照需求修改为自己想更新的容器的容器名、容器名、容器名(如果不添加此参数将默认更新全部容器这里非常不推荐)

docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup \
--run-once \
emby-embyserver1

Watchtower搭建过程

Watchtower:Watchtower 是一款实现自动化更新 Docker 镜像与容器的实用工具.它监控着所有正在运行的容器以及相关镜像,当检测本地镜像与镜像仓库中的镜像有差异时,会自动拉取最新镜像并使用最初部署时的参数重新启动相应的容器.
1、登录群辉, 打开docker→注册表搜索 Watchtower,找到第一个双击下载版本选择最新版本即可(latest)。

image-1651724057562

2、下载好以后无需运行和配置,打开群晖控制面板→任务计划→新增→计划的任务→用户定义脚本

image-1651724261766

3、常规中选择root账户,出现的提示框请选择确定。

image-1651724318877

image-1651725989622

4、计划中勾选在以下日期运行其他保持默认。

image-1651724345653

5、任务设置中勾选通过电子邮件发送运行详情,【用户定义的脚本】粘贴上自己 修改好的脚本,这样在脚本运行完成以后会有邮件通知,然后点击确定会出现一个任务。
(如果未配置邮件通知请查看我这篇文章。)

image-1651728398198

image-1651726124343

效果演示)

1、效果演示中将通过Watchtower来自动更新embyserver,目前embyserver的版本为4.6.7.0,官方最新版本为4.7.0.62 。

image-1651727162818

image-1653402455110

2、回到计划任务界面,找到刚才添加的任务,选中之后点击上面的运行,然后点击一次。

image-1651726034080

3、点击运行以后,容器列表会自动创建镜像更新容器objective_dubinsky,因为后台需要下载新的镜像,所以需要一些时间,下载好以后会用旧的容器配置新的镜像重新部署。(等待时间看网络情况)

邮箱助手截图20220524222119

4、容器配置成功以后会向之前任务计划里面配置好的邮箱发送邮件,大概内容如下。

邮箱助手截图20220524222216

5、登录emby,看到已经升级到最新版本。

image-1653402756242

总结

使用Watchtower来更新docker镜像,大大简化了部署的重复步骤,非常推荐使用。

注意事项

非常不建议使用默认配置进行全部镜像的更新,如果容器运行稳定且没有大的功能更新不建议进行镜像更新,重要容器请先备份(暂停容器以后,在设置→导出,选择完整导出之后在操作,这样出问题以后也方便恢复)。

image-1653402967583

教程结束end。。