Watchtower - 群晖自动更新 Docker 映像与容器

群晖的Docker功能非常丰富,不过也有不完美的地方,映像和容器更新比较麻烦,比如我的Docker容器运行了十几个,如果通过手动更新非常繁琐,容器还需要重新配置

本文就介绍如何通过watchtower全自动更新Docker映像,并保留原始配置重新运行容器。

watchtower 是一个可以监控正在运行的容器镜像是否有更新的工具,当本地镜像与远端镜像有差异的时候,可以自动使用当前容器的运行参数以新镜像重新创建一个新的容器,并删除旧的容器。

部署教程

下载watchtower映像

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

 

图片[1]-Watchtower - 群晖自动更新 Docker 映像与容器-LonHowe Blog
图片[2]-Watchtower - 群晖自动更新 Docker 映像与容器-LonHowe Blog

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

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

# 运行一次,更新所有的容器,并清除旧的容器

dockerrun -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容器

dockerrun --rm --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --run-once

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

 

图片[3]-Watchtower - 群晖自动更新 Docker 映像与容器-LonHowe Blog

指定容器更新

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

#只更新nginx和redis

dockerrun -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/



微信扫描下方的二维码阅读本文

© 版权声明
THE END
喜欢就支持一下吧~
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容