在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Intro 之前我们的 docker 镜像是保存在 Azure 的 Container Registry 里的,最近我们自己搭建了一个 docker registry,我们想把之前保存的 Azure 的 Container Registry 的 docker 镜像同步到我们自己的 docker registry 里 实现思路 我们的做法比较简单也比较LOW,但是基本可以满足要求, 我们的做法是
后来突然想起来阿里云好像有一个镜像同步工具,https://github.com/AliyunContainerService/image-syncer Docker-Registry API docker registry 有一套规范,可以查阅 https://docs.docker.com/registry/spec/api/ 了解更多 获取所有镜像 docker registry v2 新增了一个 语法如下:
默认最多返回100条记录,多余 100 可以通过参数 获取镜像的 tag 获取 docker 镜像的 tag 列表可以使用 操作示例 在本地部署了一个测试用的 docker registry 来做演示,我这里用 httpie 来做测试 获取镜像列表: 调用
获取镜像的 tag 列表 调用
PowerShell 脚本 一切不是自动化的运维都是耍流氓,很有可能以后会有类似的需求,不如写个脚本自动化的跑吧 下面的脚本做了一些简化,因为我们的 azure container registry 上的数量不多,只有五六十个镜像,而且镜像只有 latest 的 tag,没有其他 tag ,所以把上面的步骤做了简化,并没有分页获取所有的镜像,也没有获取所有的 tag,实际使用的话还请自行修改后使用 # variables $srcRegUser = "xxx" $srcRegPwd = "111111" $srcRegHost = "xxx.azurecr.cn" $destRegUser = "yyy" $destRegPwd = "222" $destRegHost = "registry.xxx.com" # get repositories from source registry # 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 # login source registry docker login $srcRegHost -u $srcRegUser -p $srcRegPwd # login dest registry docker login $destRegHost -u $destRegUser -p $destRegPwd # sync foreach($repo in $repositories) { Write-Host "sync $repo begin" $srcTag = "${srcRegHost}/${repo}:latest" $destTag = "${destRegHost}/${repo}:latest" Write-Host "source image tag: $srcTag" Write-Host "dest image tag $destTag" Write-Host "docker pull $srcTag begin" docker pull $srcTag Write-Host "docker pull $srcTag completed" Write-Host "docker tag $srcTag $destTag ing" docker tag $srcTag $destTag Write-Host "docker push $destTag begin" docker push $destTag Write-Host "docker push $destTag completed" Write-Host "docker rmi $srcTag $destTag begin" docker rmi $srcTag $destTag Write-Host "docker rmi $srcTag $destTag end" Write-Host "sync $repo completed" } Write-Host "Completed..." More 如果要同步的镜像比较多,考虑使用阿里云的镜像同步工具去同步 Reference 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 registry 镜像同步的文章就介绍到这了,更多相关docker registry 镜像内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论