美文网首页
Watchtower - 群晖自动更新 Docker 映像与容器

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

作者: Alvin00 | 来源:发表于2021-01-21 19:10 被阅读0次

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

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

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

部署教程

下载watchtower映像

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

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

这里我们通过群晖的计划任务运行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

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

指定容器更新

如无需自动更新所有稳定运行的容器,可以配置仅更新指定容器,只需要在命令后加上容器名.例如只更新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/

 最后修改:2020 年 12 月 16 日 08 : 54 PM

相关文章

网友评论

      本文标题:Watchtower - 群晖自动更新 Docker 映像与容器

      本文链接:https://www.haomeiwen.com/subject/mcvdzktx.html