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

【热点】Docker镜像自动升级?Watchtower帮你搞定!

Watchtower介绍

之前我们讲了Docker的部署,当前一般通过docker hub上拉取镜像进行部署,但是如果docker hub上镜像版本变更了,容器不会自动升级镜像版本,保持在旧版本,如果我们想要升级只能重新拉取最新的latest版本,然后重新部署容器,还要保证创建的命令与之前的旧容器一致,这些步骤会比较繁琐。

Watchtower 是一个可以实现自动化更新 Docker 基础镜像与容器的实用工具。它监视正在运行的容器以及相关的镜像,当检测到 registry 中的镜像与本地的镜像有差异时,它会拉取最新镜像并使用最初部署时相同的参数重新启动相应的容器。

官网链接:https://containrrr.dev/watchtower/

Watchtower本身作为一个镜像可以像其他容器一样运行:将docker的进程映射到容器内进行监控。

# 官方运行参数参考,然后会检测所有容器和镜像的更新,包括watchtower本身
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower

选项

自动清除旧镜像

默认情况下旧版本镜像会保存在磁盘中成为孤立的镜像,watchtower提供了自动清除旧版本的功能,可以在docker run 时添加参数自动清除旧的镜像。

docker run -d \
    --name watchtower \
    --restart unless-stopped \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower \
    --cleanup

或者简写-c

docker run -d \
    --name watchtower \
    --restart unless-stopped \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower -c

选择性更新

有时候我们不需要全部镜像自动升级,由此产生一些故障和bug,可以选择性进行更新,在docker run时添加需要更新的指定容器名称可以设置只有指定的容器会自动更新,用于一些不适合经常更新升级的情况。

# 指定更新nginx和redis容器名称
docker run -d \
    --name watchtower \
    --restart unless-stopped \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower -c \
    nginx redis

设置更新频率

默认watchtower会每5分钟检查更新一次,可以通过--interval, -i或者--schedule, -s设置更新间隔。 --interval, -i - 设置更新检测时间间隔,单位为秒。比如每隔 1 个小时检查一次更新:

docker run -d \
    --name watchtower \
    --restart unless-stopped \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower -c \
    --interval 3600

--schedule, -s - 设置定时检测更新时间。格式为 6 字段 Cron 表达式,而非传统的 5 字段,即第一位是秒。比如每天凌晨 2 点检查一次更新:

docker run -d \
    --name watchtower \
    --restart unless-stopped \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower -c \
    --schedule "0 0 2 * * *"

手动更新

可以手动运行一次更新,相当于单独更新部分容器一次,然后删除watchtower,主要不用名称冲突即可。

docker run --rm \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower -c \
    --run-once \
    aria2-pro

#
docker run --rm \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower -cR \
    aria2-pro

通过watchtower可以实现容器镜像版本的自动更新了,不过要考虑好那些服务需要更新,哪些不需要更新。

本文由 mdnice 多平台发布


http://www.kler.cn/a/159520.html

相关文章:

  • 如何优化Kafka消费者的性能
  • 直接映射缓存配置
  • 接口文档的编写
  • 摄像机视频分析软件下载LiteAIServer视频智能分析软件抖动检测的技术实现
  • 基于ssh得网上预约挂号系统的设计与实现
  • sql分区
  • fastapi.templating与HTMLResponse
  • 华为OD机试 - 九宫格按键输入 - 逻辑分析(Java 2023 B卷 200分)
  • 腾讯面试真题(C语言)
  • 【链表Linked List】力扣-83 删除排序链表中的重复元素
  • 有什么可视化数据管理工具?
  • 同旺科技 USB TO RS-485 定制款适配器--- 拆解(一)
  • MyBatisPlus+SpringBoot+JavaFX连接查询
  • 技术阅读周刊第第8️⃣期
  • Temporal table join requires an equality condition on fields of table
  • 【2】基于多设计模式下的同步异步日志系统-设计模式
  • git小白初学习
  • 腾讯云位居中国分布式关系型数据库“领导者”类别
  • 基于SSM实现的公文管理系统
  • 玩转数据8:数据质量管理与数据清洗的实践
  • 深度学习火车票识别系统 计算机竞赛
  • 石油化工园区:安全管理工作中的挑战与措施
  • 【上海大学数字逻辑实验报告】四、组合电路(三)
  • C语言——深入理解指针(4)
  • (C++20) consteval立即函数
  • MiniDumpWriteDump函数生成dmp文件