[折腾]群辉Watchtower 自动更新Docker映像与容器

前言

群晖的Docker功能非常丰富,不过也有不完美的地方,映像和容器更新比较麻烦,比如我的Docker容器运行了十几个,如果通过手动更新非常繁琐,容器还需要重新配置,本文就介绍如何通过watchtower全自动更新Docker映像,并保留原始配置重新运行容器。

watchtower 是一个可以监控正在运行的容器镜像是否有更新的工具,当本地镜像与远端镜像有差异的时候,可以自动使用当前容器的运行参数以新镜像重新创建一个新的容器,并删除旧的容器。这有点类似于我们手机应用商店更新 APP 一样。

部署教程

下载watchtower映像

群晖Docker搜索watchtower,下载containrrr/watchtower映像,下完即可,无需运行和配置。

[折腾]群辉Watchtower 自动更新Docker映像与容器插图

手动更新容器,并清除旧容器

这里我们通过群晖的计划任务运行watchtower,打开群晖任务计划,新建一个计划任务-用户自定义脚本,填入以下脚本。

# 运行一次,更新所有的容器,并清除旧的容器  
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --run-once

当需要更新容器的时候,手动运行一下该计划任务即可,Docker容器中会运行一个watchtower,更新完成后watchtower自动停止。

手动/定时更新容器,完成后删除本次运行Watch­tower容器

还是通过群晖的计划任务运行watchtower,每次更新完自动删除运行的watchtower容器,下次更新的时候再重新生成。

# 运行一次,更新所有的容器,并清除旧的容器,并删除watchtower容器
docker run --rm --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --run-once

如果需要定时自动更新,将任务计划设置成固定周期自动运行即可。

[折腾]群辉Watchtower 自动更新Docker映像与容器插图1

指定容器更新

如无需自动更新所有稳定运行的容器,可以配置仅更新指定容器,只需要在命令后加上容器名.例如只更新nginx和redis。

#只更新nginx和redis
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --run-once nginx redis

注意指定容器需填写 容器名 ,并非镜像名.由于部分容器启动时可能没有定义 –name 参数,请ssh登录群晖执行 docker ps 查询核对容器名.

其他更多参数见官网 https://containrrr.dev/watchtower/arguments/

封面图

评论0

请先

没有账号? 注册  忘记密码?

社交账号快速登录

微信扫一扫关注
如已关注,请回复“登录”二字获取验证码
error: 警告:内容受保护!!