azure 如何将所有映像从ACR存储库导入到不同租户中的另一个ACR

px9o7tmv  于 2023-05-01  发布在  其他
关注(0)|答案(2)|浏览(124)

**场景:**我在ACR(azure container registry)中有4个repo,每个repo中有多个镜像。我想将所有的仓库和所有镜像移动到不同的ACR(Azure容器注册表)**我做了什么:**我使用下面的命令将ACR(Azure容器注册表)仓库中的单个镜像导入到另一个ACR仓库。

az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerrepo:tag \
  --image targetimage:tag \
  --username <SP_App_ID> \
  --password <SP_Passwd>

**问题:**上面的命令只根据给定的标签导入一张图片。
**所需解决方案:**我想实现的是将一个ACR的单个仓库中的所有镜像导入到另一个ACR中。

请让我知道如果有人有任何解决方案。

vddsk6oq

vddsk6oq1#

使用pwsh和az cli创建了以下脚本:

$SourceAcrName="source ACR Name"
$DestinationAcrName="destination ACR Name"

$Repos= az acr repository list --name $SourceAcrName | ConvertFrom-Json

foreach ($repo in $Repos) {
    $Tags = az acr repository show-tags -n $SourceAcrName --repository $repo | ConvertFrom-Json
    foreach ($tag in $Tags) {
        az acr import -r $SourceAcrName -n $DestinationAcrName --source "${repo}:${tag}" --no-wait
    }
}

它会将ACR中的所有存储库和标签复制到目标ACR。--no-wait参数允许任务在Azure中的后台运行,因此您不必等待确认。

mzmfm0qo

mzmfm0qo2#

我得到了@Maraudingas的脚本并做了一个小小的改动,这就是我的工作方式

$SourceAcrName="##"
$DestinationAcrName="##"

$Repos= az acr repository list --name $SourceAcrName --username ## --password ##| ConvertFrom-Json

foreach ($repo in $Repos) {
$Tags = az acr repository show-tags -n $SourceAcrName --repository $repo --username ## --password ##| ConvertFrom-Json
foreach ($tag in $Tags) {
    az acr import -n $DestinationAcrName --source "${SourceAcrName}.azurecr.io/${repo}:${tag}" --no-wait --username ## --password ##
  }
}

相关问题