PHP程序员小白到大牛集训(12期免息)
Apifox=Postman + Swagger + Mock + JMeter,是接口文档,接口调试,接口 Mock,接口自动化测试一体化协作平台, php中文网推荐使用
广告
作者信息

长期闲置

长风破浪会有时,直挂云帆济沧海。

最近文章
linux文件的大小能限制吗1047
linux的make命令找不到怎么解决326
linux中i节点是什么564
视频教程分类
推荐视频教程
  • php程序员小白到大牛三个月集训php程序员小白到大牛三个月集训
  • Laravel 9 学习正当时—保姆级教程,想学不会都难!Laravel 9 学习正当时—保姆级教程,想学不会都难!
  • 千万级数据并发解决方案(理论+实战)千万级数据并发解决方案(理论+实战)
  • Laravel基础与实战(模块化)Laravel基础与实战(模块化)
  • 首页 >运维 >Docker > 正文

    docker中的镜像会自动更新吗

    原创2022-06-22 16:23:49844 关注公众号:每天精选资源文章推送

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

    本教程操作环境:linux7.3系统、docker19.03版、Dell G3电脑。

    docker镜像自动更新

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

    在使用Docker时有的镜像可能需要经常更新,通常情况下手动更新容器比较繁琐,需要四个步骤:

    1.停止容器 docker stop <CONTAINER>

    2.删除容器 docker rm <CONTAINER>

    3.检查镜像更新情况,更新镜像 docker pull <IMAGE>

    4.重新启动容器 docker run <ARG> …… <IMAGE>

    容器较少还比较好如果有大量容器需要更新,那将会产生巨大的工作量。现在为大家介绍一种自动更新容器的方式,该方法同样适用于群晖下的Docker。

    Watchtower 会监视运行容器并监视这些容器最初启动时的镜像是否需要更新。当 Watchtower 检测到一个镜像已经有变动时,它会使用新镜像,使用相同的参数自动重新启动相应的容器。同时 Watchtower 本身也被打包为 Docker 镜像,用一行命令即可使用 Watchtower 监控所有容器,然后所有容器都会自动更新,当然也包括 Watchtower 本身。

    快速开始

    Watchtower 本身被打包为 Docker 镜像,因此可以像运行任何其他容器一样运行它,其他的Docker环境下使用Docker命令直接下载镜像:

    docker pull containrrr/watchtower

    群晖中的Docker可以直接到注册表搜索下载:

    03.png

    其他Docker执行命令

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

    用上面的代码即可在后台启动 watchtower 容器,并监控当前所有镜像的更新情况。因为 watchtower 需要与 Docker API 进行交互以监控正在运行的容器,所以在使用时需要加上 -v 参数将 /var/run/docker.sock 映射到容器内。

    在群晖中使用群晖的计划任务运行watchtower

    04.png

    打开群晖任务计划,新建一个计划任务-用户自定义脚本,填入以下脚本,运行一次,更新所有的容器,并清除旧的容器

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

    可以在计划任务中设置自动运行,或者需要的时候手动运行一次。然后所有容器都会自动更新,也包括 Watchtower 本身。

    选项参数

    默认情况下,watchtower 将监视它所指向的 Docker 守护进程内运行的所有容器。但你也可以在启动 watchtower 时指定特定容器的名称,从而只监视那几个特定的容器。例如:

    docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --run-once nginx redis

    这时 watchtower 将只监视名为“nginx”和“redis”的容器,所有其他正在运行的容器将被忽略。如果你不想把 watchtower 放在后台运行,就可以加入 --run-once 参数,watchtower 容器将在前台执行。

    使用 --cleanup 参数在更新后自动删除旧的镜像

    使用 --monitor-only 将仅监控新镜像并发送通知,不会更新容器

    使用 --interval 设置设更新检测时间间隔,单位为秒。比如每隔 1 个小时检查一次更新则为 --interval 3600

    更多具体的使用方式可以查看watchtower 的官方文档,此处只列出了常用的两种方式。群晖因为可以使用自动计划任务可以不使用--interval参数。

    推荐学习:《docker视频教程

    以上就是docker中的镜像会自动更新吗的详细内容,更多请关注php中文网其它相关文章!

    20期PHP线上班

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

  • 相关标签:Docker
  • 相关文章

    相关视频


    专题推荐