【热点】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 多平台发布

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不喜欢热闹的孩子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值