当前位置: 首页 > news >正文

Docker容器自动更新利器:Watchtower

我在之前的一篇文章《两个开源项目打造自己的大模型聚合平台》中介绍过,我目前在使用open-webui和onehub这两个开源软件,作为自己ai chat的平台,当时为了方便都使用了docker进行部署。这两个开源软件目前都输入活跃状态,所以基本上1-2周都会更新一版。加上一些其他比如dify、n8n之类的软件,所以之前我几乎每周都必须要有一次手动操作docker更新镜像的操作,虽然不是特别麻烦,但是每次手动操作还是有些繁琐。最近我发现了Watchtower这个docker工具,居然可以自动化更新,非常方便,这里分享个给大家。

什么是Watchtower

简要介绍一下Watchtower,它是一个自动化更新Docker镜像的工具,专门用于监控运行中的Docker容器并自动将它们更新到最新版本。当检测到镜像更新时,Watchtower会自动按原有配置重将已经运行的容器更新到最新镜像,确保你一直使用最新的版本。 但这里也额外提醒下,这个工具还比较适合像我这种个人使用场景,追求各类工具最新feature的情况,在生产环境下还是有限保证功能稳定性,反而不适合无规划的自动升级。

安装与使用

其使用也非常简单,本身它也是一个docker容器。直接docker run 即可启动,启动后它就会自动监控您所有正在运行的Docker容器。

使用Docker运行Watchtower

docker run -d \--name watchtower \-v /var/run/docker.sock:/var/run/docker.sock \containrrr/watchtower

也可以使用docker compose启动,也非常方便。

使用Docker Compose

version: "3"
services:watchtower:image: containrrr/watchtowervolumes:- /var/run/docker.sock:/var/run/docker.sockcommand: --interval 30

配置选项

常用命令行参数

Watchtower提供了多种命令行参数,让用户可以灵活控制其行为。以下是一些最常用的参数:

参数说明
–interval, -i检查更新的间隔时间(秒),不配置的话默认是24h更新
–cleanup更新后自动移除旧的镜像,默认不会主动移除旧镜像,如果你磁盘工具不是很充裕,建议开启
–debug启用调试模式
–monitor-only只监控不更新
–run-once只运行一次然后退出

选择性更新特定容器

如果你不想更新所有容器,可以在启动Watchtower时指定特定的容器名称:

docker run -d \--name watchtower \-v /var/run/docker.sock:/var/run/docker.sock \containrrr/watchtower container1 container2

这样Watchtower只会监控和更新名为container1和container2的容器,而忽略其他容器。

注意事项

  • 数据持久化: 确保容器数据通过卷(volumes)正确持久化,避免更新时数据丢失
  • 生产环境慎用: 如开头所述,此工具可能只适合个人开发者,在生产环境中需谨慎使用
  • 网络带宽: 频繁的检查和更新可能会消耗大量网络带宽

总结

Watchtower为Docker用户提供了一种简便的方式来保持容器始终运行最新版本,大大减轻了手动更新的负担。对于个人开发环境或非关键应用,它是一个极其有用的工具。通过合理配置更新间隔和通知选项,可以在保持系统最新的同时避免不必要的干扰。

相关文章:

  • 自动化测试01
  • 如何用AI开发完整的小程序<9>—UI自适应与游戏页优化
  • oracle rac - starwind san 磁盘共享篇
  • SpringBoot+Vue服装商城系统 附带详细运行指导视频
  • 设计模式精讲 Day 10:外观模式(Facade Pattern)
  • 华为云Flexus+DeepSeek征文|Dify-LLM平台部署教程与Flexus X实例优势解析
  • CTE vs 子查询:深入拆解PostgreSQL复杂SQL的隐藏性能差异
  • JavaScript 的 “==” 存在的坑
  • 大零售生态下开源链动2+1模式、AI智能名片与S2B2C商城小程序的协同创新研究
  • 深入理解Spring的ResponseBodyAdvice接口
  • Linux 服务器运维:磁盘管理与网络配置
  • Neo4j关系属性操作完全指南:修改与更新技巧
  • 【学习笔记】深入理解Java虚拟机学习笔记——第11章 后端编译与优化
  • leetcode练习
  • Hologres的EXPLAIN和EXPLAIN ANALYZE简介
  • 如何用AI开发完整的小程序<10>—总结
  • 【笔记】Windows 系统迁移 Ubuntu(Preview)应用到其他磁盘
  • STM32HAL库 -- 8.串口UART通信并开启printf功能
  • 一次使用 RAFT 和 Qwen3 实现端到端领域RAG自适应
  • Nginx 基础知识
  • 网站备案承诺书填写/百度下载安装2022最新版
  • 网站制作花多少钱/最近一两天的新闻有哪些
  • 韶关营销型网站建设/网站开发软件有哪些
  • 石碣网站建设/免费合作推广
  • 前端网站模板/seo必备软件
  • 吃的网站要怎么做的/网站建设平台哪家好