docker registry 镜像同步的实现思路

docker registry 镜像同步的实现思路,第1张

dockerregistry镜像同步的实现思路

本文详细介绍了docker注册表镜像的专业知识,对大家来说非常详细。对大家的学习、培训或者工作都有一定的参考价值,一定要朋友们参考。

简介

我们以前的docker图像存储在Azure的容器注册表中。最近,我们自己建立了一个docker注册表。我们希望将之前存储的Azure容器注册表的docker映像与我们自己的docker注册表共享。

完成这个想法

大家的做法都很简单,低,但是基础可以达到要求。

大家的做法是

  • 首先获取源注册表中的所有镜像目录。
  • 然后一个一个的获取镜子的标签。
  • 然后解析xml,将匹配的图像拉到本地,然后docker标记它,并将其命名为新的注册表图像名称。
  • 然后将docker镜像推送到新的注册表。
  • 删除免费下载到本地的图片和推送到新注册表的图片。
  • 然后突然想起来阿里云服务好像有镜像工具,https://github.com/AliyunContainerService/image-syncerImage-Syncer是docker镜像工具,可以用来进行多对多的镜像仓库共享。适用于现阶段最流行的docker镜像仓库服务。看到详细的介绍就很不错了。如果需要在注册表中间进行镜像,可以试试这个工具。看详细介绍不容易拿到本地盘。从源注册表获取镜像数据信息后,会立即将信息推送到新注册表,效率会高很多。

    Docker-RegistryAPI

    Docker注册处有一套标准,可以检查https://docs.docker.com/registry/spec/api/'s掌握的大量

    获取所有镜像

    Dockerregistryv2增加了一个_catalog的api来获取所有图片,v1可以替换为_search。

    英语语法如下:

    获取/v2/_catalog

    默认数字返回多达100条记录,但100不是必需的。总数可以根据主参数n来指定,在分页查询的情况下,可以指定另一个主参数last来指定从上一页返回的最后一张图片。例如,http://example.com/v2/_catalog?.n=20&;last=b

    获取镜子的标签

    Get/v2/<存储库名称>/tags/list,还可以进行分页查询。类似于上图目录,可以根据N和last完成分页查询加载。

    实际 *** 作示例

    为了试听,在本地部署了一个用于测试的docker注册表,我在这里使用了httpie进行测试。

    获取镜像目录:

    启用_catalog套接字以获取镜像目录。

    http:5000/v2/_目录

    获取镜像的标签目录。

    启用标签/列表套接字以获取镜像的标签。

    http:5000/v2/busybox/tags/list
    http:5000/v2/redis/tags/list

    PowerShell脚本

    不是所有自动化技术的运维管理都是耍无赖,很可能后面还会出现类似的需求,还不如写了一个脚本制作自动化技术的跑哥。

    底层的脚本被简化了,因为azurecontainerregistry上只有五六十个镜像,镜像只有最新的标签,没有其他标签。因此,顶部的过程被简化了,没有分页查询来获取所有镜像和所有标记。请在应用之前独立更改具体应用。

    #variables $srcRegUser="xxx" $srcRegPwd="111111" $srcRegHost="xxx.azurecr.cn" $destRegUser="yyy" $destRegPwd="222" $destRegHost="registry.xxx.com" #getrepositoriesfromsourceregistry #httpie $response=(http-b-a"${srcRegUser}:${srcRegPwd}""https://${srcRegHost}/v2/_catalog")|ConvertFrom-Json #curl #$response=(curl-u"${srcRegUser}:${srcRegPwd}""https://${srcRegHost}/v2/_catalog")|ConvertFrom-Json #repository $repositories=$response.repositories # Write-Host$repositories #loginsourceregistry dockerlogin$srcRegHost-u$srcRegUser-p$srcRegPwd #logindestregistry dockerlogin$destRegHost-u$destRegUser-p$destRegPwd #sync foreach($repoin$repositories) { Write-Host"sync$repobegin" $srcTag="${srcRegHost}/${repo}:latest" $destTag="${destRegHost}/${repo}:latest" Write-Host"sourceimagetag:$srcTag" Write-Host"destimagetag$destTag" Write-Host"dockerpull$srcTagbegin" dockerpull$srcTag Write-Host"dockerpull$srcTagcompleted" Write-Host"dockertag$srcTag$destTaging" dockertag$srcTag$destTag Write-Host"dockerpush$destTagbegin" dockerpush$destTag Write-Host"dockerpush$destTagcompleted" Write-Host"dockerrmi$srcTag$destTagbegin" dockerrmi$srcTag$destTag Write-Host"dockerrmi$srcTag$destTagend" Write-Host"sync$repocompleted" } Write-Host"Completed..."

    更大的

    如果需要分享的图片很多,可以考虑使用阿里云服务器的图片分享工具进行分享。

    参考

    https://stackoverflow.com/questions/31251356/how-to-get-a-list-of-images-on-docker-registry-v2

    https://github.com/AliyunContainerService/image-syncer

    https://docs.docker.com/registry/spec/api/

    摘要

    关于docker注册表映像的这篇文章到此结束。有关docker注册表映像的大量信息,请搜索您以前的文章或再次访问下面的相关文章。期待你以后的申请!

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zz/774455.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-03
    下一篇 2022-05-03

    发表评论

    登录后才能评论

    评论列表(0条)

    保存