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

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

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

前言

在早前部署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

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

相关文章

CentOS使用OneIndex部署OneDrive免费网盘教程

CentOS使用OneIndex部署OneDrive免费网盘教程

前言本文将详解如何在CentOS上使用OneIndex程序部署OneDrive免费网盘OneIndex是一款不占服务器空间,不走服务器流量,直接列出OneDrive目录,文件在线查看和直接下载的Web源码OneIndex项目地址部署流程一、...

支持本地,腾讯,阿里,七牛,又拍云对象存储的Lsky Pro图床安装教程

支持本地,腾讯,阿里,七牛,又拍云对象存储的Lsky Pro图床安装教程

前言一直在寻找一款外观颜值高,部署简单,功能强大的图床程序.经过多达10款图床程序的测试,最终选择了Lsky Pro来作为正式环境的图床站点程序.Lsky Pro项目地址Lsky Pro的部署相对很多图床来说,环境需求简单,整个部署时间加上...

修改Hosts临时解决GitHub的raw.githubusercontent.com无法链接的问题

修改Hosts临时解决GitHub的raw.githubusercontent.com无法链接的问题

前言正值双11,各大云服务商的活动非常给力,正好给公司添置一台项目服务器,在配置相关环境时,发现GitHub的raw.githubusercontent.com域名解析竟然因某些你懂的原因给临时污染了.终于通过修改hosts解决掉此问题,可...

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

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

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

Nginx 配置 OCSP Stapling 优化 HTTPS 访问

Nginx 配置 OCSP Stapling 优化 HTTPS 访问

前言由于国内网络对 Let's Encrypt 域名证书的 OSCP 服务器域名进行了 DNS 污染,用户在访问网站时,请求 OSCP 服务器的过程会导致网站访问速度很慢.本文将介绍如何通过配置网站的 nginx 来预先装订 OCS...

Docker Compose 部署 ELK 日志管理系统 Elasticsearch + Logstash + Kibana + Filebeat

Docker Compose 部署 ELK 日志管理系统 Elasticsearch + Logstash + Kibana + Filebeat

前言ELK日志管理系统是Elasticsearch + Logstash + Kibana的简称,加上Filebeat组成一整套日志收集,过滤,处理,数据存储和前端展示系统.博主经过一段时间的安装,配置,测试也基本满足了个人以及中小企业团队...

发表评论

访客

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