Docker更新太麻烦?NAS部署Watchtower,实现全自动无感升级

2026-07-19 21:46:24 1点赞 4收藏 1评论

大家好,我是飘雷。

很多喜欢折腾NAS的兄弟,都会在设备上跑上各种各样的Docker容器。比如咱们之前教程里分享过的影视服务器、下载软件、各类辅助工具等等。

但是随着容器越装越多,有个让人头疼的问题就来了,怎么给这些Docker容器更新升级?

在部署的Docker容器较少时,咱们可以采用手动更新,只是步骤往往比较繁琐,得去镜像站拉取最新镜像,然后停止当前容器,删除旧容器后用相同的参数重新部署新容器。

可以想象,如果有十几个甚至几十个容器,隔三差五这么搞一次更新的话,就属实有点太麻烦了

那么,有没有什么办法能让我们一劳永逸,让NAS自动帮我们在后台默默升级这些Docker容器呢?

有的兄弟,有的。

今天咱们就来分享一款在Github上斩获24.7k收藏的免费开源神器Watchtower,只要把它部署起来,NAS就拥有了自动升级Docker容器的超能力。

https://github.com/containrrr/watchtower

Docker更新太麻烦?NAS部署Watchtower,实现全自动无感升级

一、Watchtower是什么?

Docker更新太麻烦?NAS部署Watchtower,实现全自动无感升级

Watchtower翻译成中文就是瞭望塔,它的本质其实是一个极其轻量级的Docker容器,在运行后,会像一个尽职尽责的哨兵一样,监控着你NAS上运行的其他Docker容器。

它会定时去DockerHub之类的镜像仓库拉取比对镜像的版本信息,一旦发现某个容器有了新版本的镜像,就会自动拉取新镜像,关闭旧容器,然后使用你最初部署时的完全相同的参数启动新容器,全程无需人工干预。

Watchtower在监控的自由度也相当高,咱们可以让它监控所有容器,也可以通过黑白名单或直接指定名称的方式,精准控制更新范围,绝不误伤核心数据容器。

对于喜欢折腾各种Docker的朋友来说,这绝对是一个能让你事半功倍的效率神器。今天咱们就手把手教大家,在NAS上把它跑起来。

二、NAS部署Watchtower流程

接下来我们来看看如何在NAS上通过Docker Compose的方式部署Watchtower,这里用到的设备依然是威联通最新的8盘位旗舰型号Qu805,N355处理器性能强劲,搭配可替换的16GB内存,跑再多Docker也没压力。

Docker更新太麻烦?NAS部署Watchtower,实现全自动无感升级

这里使用Docker Compose的方式来部署最为方便,一键复制粘贴代码即可,参数修改清晰可见,非常轻松。

打开威联通 Container Station,点击左侧的「应用程序」,然后点击右侧黑色「创建」按钮,输入以下代码:

services: watchtower: image: containrrr/watchtower:latest container_name: watchtower restart: always environment: # 设置时区为上海 - TZ=Asia/Shanghai # 每天凌晨4点自动检查并更新 - WATCHTOWER_SCHEDULE=0 0 4 * * * volumes: - /var/run/docker.sock:/var/run/docker.sock

这里需要注意,必须映射/var/run/docker.sock,它赋予了Watchtower与NAS底层Docker守护进程通信的权限,加入这行Watchtower才能接管和控制其他容器,千万别删别改。

Docker更新太麻烦?NAS部署Watchtower,实现全自动无感升级

点击「创建」后,耐心等待NAS拉取镜像并部署完成。在Container Station中看到状态显示正在运行即可。

Docker更新太麻烦?NAS部署Watchtower,实现全自动无感升级

三、Watchtower的使用和配置

Watchtower的部署过程非常简单,但它没有提供部署后的设置功能,所以有特殊需求的话,咱们需要通过在部署时添加相应命令才能实现。

为了让Watchtower更符合咱们个人的使用习惯,建议大家掌握以下几个核心的配置技巧,这也是官方文档中极为推荐的做法。

1. 修改自动检查更新的频率与时区

在上面的Docker Compose代码中,我们使用了 WATCHTOWER_SCHEDULE=0 0 4 * * *,代表每天凌晨4点整执行检查。

这里有两个细节需要特别注意。

首先,Watchtower使用的是6位的Cron表达式(比 Linux 常见的 5位 多了最前面的秒),第一位必须填代表秒数的数字。

举例来说,如果我们想改成每周日凌晨3点更新,可以修改为:0 0 3 * * 0。

另外,时区变量(TZ)极其重要,如果咱们在环境变量中不配置TZ=Asia/Shanghai,Watchtower就会默认使用UTC时间。

因为北京时间比UTC快8小时,在不手动指定时区的情况下,在原始代码中设定的凌晨4点,实际触发时间会变成咱们当地的中午12点。

所以一定要加上时区环境变量,才能保证它按咱们设定的本地时间准确干活。

不放心的话,可以在部署完成后去Container Station看一眼容器日志,如果出现了预期的时间和+0800 CST,就代表时区和定时任务都完美生效了。

Docker更新太麻烦?NAS部署Watchtower,实现全自动无感升级

2. 灵活选择监控Docker容器的范围

默认情况下,Watchtower会监控并更新NAS上所有的容器,但在实际使用时大家都知道,并非所有的Docker都适合无脑自动更新。

比如Nextcloud、MySQL等数据库类容器,跨版本大更新如果不提前备份,有可能会导致数据崩溃。

为了安全,Watchtower官方给出了三种精准控制的方法:

(1)直接指定容器名称

如果我们只想更新极个别的几个容器,可以直接在DockerCompose里通过command参数来指定容器名字,只需要在咱们刚才的代码最下面加上一行即可,多个容器名中间用空格隔开。

比如,如果我们只想更新名为nginx和redis的容器:

volumes: - /var/run/docker.sock:/var/run/docker.sock # 在这里直接写上你要监控的容器名,空格隔开 command: nginx redis

加上这一行后,Watchtower就会完全无视其他的应用,变成nginx和redis的专属升级保姆。

(2)黑名单模式(排除法)

如果我们大部分Docker容器都想自动更新,只有少数几个不想动。只需要在部署那个不想被更新的Docker容器时,给它加上这行 labels 标签:

labels: - "com.centurylinklabs.watchtower.enable=false"

Watchtower监控时看到这个标签,就会直接忽略它。

(3)白名单模式(指定法)

如果我们希望统一通过标签来管理更新权限,可以在Watchtower的环境变量中加入一行:

- WATCHTOWER_LABEL_ENABLE=true

此时Watchtower默认不会更新任何容器。

然后,只需要在想被更新的容器上加上下面的白名单标签,Watchtower就会只针对有这条标签的容器进行更新:

labels: - "com.centurylinklabs.watchtower.enable=true"

这种机制容错率更高,也更适合NAS老手来使用。

3. 更新后自动移除旧镜像

Docker的运行机制是这样的,拉取新版本镜像后,旧版本镜像并不会自动删除,而是会变成名为 的悬空镜像(Dangling images)。

随着咱们容器不断更新,如果不加干预,这些废弃的旧镜像可能会大量挤占NAS的硬盘空间。

为了解决这个痛点,我们只需要在Watchtower中加入环境变量:

- WATCHTOWER_CLEANUP=true

开启这个选项后,一旦 Watchtower成功拉取新镜像并重启了容器,它就会顺手把遗留下来的旧版本镜像彻底删除,释放NAS上的硬盘空间。

4. 一次性手动运行模式

如果有兄弟不想让它常驻后台,只想在需要的时候更新一下,我们可以在代码的环境变量部分把WATCHTOWER_SCHEDULE 删掉,加上变量:

- WATCHTOWER_RUN_ONCE=true

同时删除自动重启命令:

restart: always

此时Watchtower在部署后会运行一次,完成检查与更新任务后会自动退出,丝毫不占用NAS的日常内存,非常干净利落。

下一次想要手动更新时,只需要在Container Station选中它,再次启动即可。

总结

总体来说,Watchtower这个项目完美地解决了NAS玩家后期维护Docker容器的痛点,它就像一个默默无闻的后台大管家,替咱们完成最耗时、最繁琐的版本追踪和重启工作,并且凭借灵活的配置项,咱们也可以把它调教得极其顺手。

如果你也被繁琐的手动更新折磨过,强烈建议花个3分钟把它部署在NAS里试试。

以上就是本期的全部内容了,如果大家在部署过程中遇到什么问题,欢迎在评论区留言交流。也欢迎给飘雷来个点赞、收藏加关注三连击,我们下期再见!

展开 收起
1评论

  • 精彩
  • 最新
  • 能用还是别更新了,有些升级了反倒不能用

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
4
扫一下,分享更方便,购买更轻松