当前位置:首页 > 群晖专栏 > 运维部署 > 正文内容

Watchtower - 自动更新 Docker 镜像与容器

admin5年前 (2020-02-20)运维部署151

前言

在早前部署Awesome TTRSS时,作者在docker-compose里配置了Watchtower,于是找到 Github 官方项目研究了下,根据官方文档简单整理了一下常用参数以备用.



部署

快速启动

执行以下标准命令启动 Watch­tower 容器,并每 5 分钟一次检查所有容器的镜像是否为最新版,如发现镜像更新将会自动停止容器,删除容器,拉取最新镜像,在以之前启动容器的命令启动容器.

docker run -d \
    --name watchtower \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower

清理旧镜像

镜像在更新后旧镜像标签会变为none,长期自动更新会导致过多的none镜像占用空间,加入--cleanup参数可以在每次更新后自动删除none镜像.

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

指定容器更新

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

docker run -d \
    --name watchtower \
    --restart always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower \
    --cleanup \
    nginx redis
注意指定容器需填写 容器名 ,并非镜像名.由于部分容器启动时可能没有定义 --name 参数,请执行 docker ps 查询核对容器名.

配置自动更新频率

Watch­tower 默认每 5 分钟轮询一次,可以使用以下参数配置更新的频率.

  • --interval,-i 配置更新周期,默认300秒.

  • --schedule,-s 配置定时更新,使用Cron表达式,例如"0 0 1 * * *".即每天凌晨1点更新.


注意:当使用 -s 参数来配置定时更新时,由于容器内默认为 UTC 时间,上述设置的 凌晨1点 实际上是北京时间 早上9点 .可以通过加上 -e TZ=Asia/Shanghai 环境变量来定义时区,此时配置的时间则为北京时间.

每小时更新一次

docker run -d \
    --name watchtower \
    --restart always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower \
    --cleanup \
    -i 3600

每天凌晨1点更新(北京时间)

docker run -d \
    --name watchtower \
    --restart always \
    -e TZ=Asia/Shanghai \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower \
    --cleanup \
    -s "0 0 1 * * *"

手动更新

使用手动更新的方式,运行一次Watch­tower容器来更新所需的容器,更新后会自动删除本次运行的Watch­tower容器.只需要加上--rm--run-once参数即可.同时也可以配合以上指定容器或指定排除容器的参数来使用.

手动更新所有容器

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

手动更新指定容器

docker run --rm \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower \
    --cleanup \
    --run-once \
    nginx redis
注意指定容器需填写 容器名 ,并非镜像名.由于部分容器启动时可能没有定义 --name 参数,请执行 docker ps 查询核对容器名.

手动运行更新时会出现以下消息,表示正在更新,请耐心等待几分钟.

time="2020-02-18T03:58:24Z" level=info msg="Running a one time update."

随后提示找到更新镜像,停止容器,更新镜像,重启容器并移除旧镜像.至此更新完毕.

time="2020-02-18T04:02:45Z" level=info msg="Found new xxxx/xxxx:latest image (sha256:10383f5b5720d7e1fxxxx137034c69b7f6xxxxxxafcc4e9d508b561af77)"
time="2020-02-18T04:02:45Z" level=info msg="Stopping /xxxx (2e9ce1ebe319f3a35d80bxxxxxxxxxx6763ada155da957acb24fe76fc8a8c5) with SIGTERM"
time="2020-02-18T04:02:46Z" level=info msg="Creating /xxxx"
time="2020-02-18T04:02:46Z" level=info msg="Removing image sha256:ff4ee4caaa237174080c0d545xxxxxxxxxxxxxxx5d740ddc51e7737839cb5"

结语

其他更多参数以及功能请参考官方文档:

本站提供免费和付费的技术支持.你可以通过留言,邮件,QQ的方式来进行技术交流和免费咨询.同时也可以付费支持的方式获得相关的技术支持,项目部署配置等服务.具体相关详情请点击查看 技术支持页面



扫描二维码推送至手机访问。

版权声明:本文由梦魁网络资源站发布,如需转载请注明出处。

本文链接:https://family.monkui.com:39/?id=202

标签: 运维部署
分享给朋友:

相关文章

Apache设置301重定向到www和强制跳转https教程

Apache设置301重定向到www和强制跳转https教程

前言本文将详解如何配置Apache的.htaccess文件来使域名跳转到www和强制跳转到https首先在建站之前,需要确认今后网站是使用类似ioiox.com一级域名,还是www.ioiox.com二级域名,根据域名长度,使用场景,域名视...

配置Docker中国官方镜像加速教程

配置Docker中国官方镜像加速教程

前言由于国内用户提取Docker镜像文件速度太慢,Docker推出了中国官方镜像加速地址.配置流程非常简单.配置流程编辑daemon.jsonvim /etc/docker/daemon.json添加镜像代码(Docker中国官方...

国外 Linux VPS 去程回程线路路由查询教程

国外 Linux VPS 去程回程线路路由查询教程

前言每年双11,12,黑五都是VPS各种打折的季节,我也趁这段时间研究了一下国外VPS的相关知识.国外VPS的首要指标就是要速度快,那么如何判断本地与VPS之间的线路好坏,本文将介绍使用软件和命令来查询去程回程的线路路由命令.如何通过查询路...

GitHub Actions + 腾讯云COS + SCF云函数 + 自动刷新CDN 完美自动化部署静态网站

GitHub Actions + 腾讯云COS + SCF云函数 + 自动刷新CDN 完美自动化部署静态网站

前言作为强迫症患者,一直对自动化部署非常痴迷,个人认为全自动部署最重要的就是稳定可靠,经过研究测试,最终使用GitHub和腾讯云两大平台,成功完成了全自动部署网站的实践.文章略长,但完成整个部署仅需不到半小时.方案简介业务需求博主有一个简单...

docker compose 部署配置 Awesome TTRSS 教程

docker compose 部署配置 Awesome TTRSS 教程

前言博主是一个 RSS 重度使用者,早已不记得是何时开始,也许大概是 Google Reader 那个时代,至今已经十几年,保持着每天睡前阅读的习惯.自 Google Reader 关闭服务...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。