前言:解放双手,实现容器维护自动化

哈喽大家好!

在 NAS 上部署了众多 Docker 容器后,手动检查和更新是一项繁琐且容易遗忘的工作。今天,我为大家分享一个真正能解放双手的 Docker 神器——Watchtower

Watchtower 会根据你设定的时间,静默地检查并更新所有需要更新的容器,真正实现容器维护自动化。本篇教程将带你完成 Watchtower 的部署,并重点解析几个核心的安全配置,让你用得放心又省心!


🎬 核心部署:Watchtower 的 Compose 配置解析

第一步:创建项目目录

  1. 在你的 NAS 文件管理中,创建一个新的目录,例如命名为 watchtower
  2. 这个目录将用于存放 Watchtower 的配置和数据(如果需要)。

第二步:部署 Compose 文件(核心安全设置)

Watchtower 通过 Docker Compose 部署。在粘贴代码之前,我们必须设置几个关键的参数,确保自动化更新的安全性和效率。

  1. 新增 Compose 项目:在 Docker 管理工具中(如飞牛 Compose),新增项目并选择刚才创建的目录。

  2. 粘贴代码:将以下代码粘贴进来,并根据你的需求修改环境变量:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    version: '3.8'

    services:
    watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    restart: unless-stopped
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock # 必须挂载,以便监控
    environment:
    - TZ=Asia/Shanghai # 设置时区,方便日志查看
    # 如果需要通过环境变量排除容器,可以在这里设置 WATCHTOWER_SCOPE 或 WATCHTOWER_IGNORE

    # 🔑 核心功能通过 command 传入,优先级最高
    # 建议实际使用时,将 --interval 120 修改为 --interval 86400 (24小时)
    command: --interval 120 --cleanup --rolling-restart # jellyfin
  3. 关键参数解析

    核心功能(--interval--cleanup--rolling-restart)是通过 command 传递给 Watchtower 容器的启动命令。

Command 参数 作用说明 建议值
--interval <秒> 检查间隔时间(秒)。Demo 中为 120 秒。实际使用中,建议至少设置为 86400 (24 小时),避免资源浪费。 86400
--cleanup 清理旧镜像。启用后,更新成功立即删除旧镜像,节省磁盘空间。 启用
--rolling-restart 滚动更新。启用后,同时有多个容器更新时,会逐个重启,减少对资源和服务的冲击。 启用
  1. 开始构建:点击确认,启动 Watchtower 容器。

✨ 监控与维护:通过日志查看工作状态

Watchtower 是一个没有 Web 界面的工具,它在后台静默运行。

1. 查看日志

部署完成后,我们需要通过查看容器日志来确认它的工作状态:

  • 更新完成:整个更新流程(停止旧容器 -> 拉取新镜像 -> 启动新容器)完成后,日志会给出本次检查的总结,例如:共检查了 X 个容器,更新了 Y 个,0 个失败。

现在,你已经成功将容器更新的繁琐工作交给了 Watchtower!

总结:让你的 NAS 保持最新!

Watchtower 是实现 Docker 运维自动化的必备工具。通过简单的 Compose 配置,我们不仅实现了容器的自动更新,还通过 CLEANUPROLLING 参数确保了维护过程的效率和安全性。

从今天起,彻底告别手动更新的烦恼吧!

感谢大家的阅读。如果你在部署或使用中有任何疑问,欢迎在下方留言讨论。我们下期再见!