az acr - 如果单个帐户有多个订阅,则无法找到存储库
az acr - Unable to find repository in case of multiple subscription on single account
我正在使用 Azure CLI v2.0.62。
我在 Azure 中的单个帐户上确实有多个订阅 - S1、S2、S3、S4。
我正在执行以下脚本以将动态值插入存储库:
az login
az acr build "ParentStorage" --platform windows -f Dockerfile -t ChildRepository:<dynamicValue>
这里ParentStorage
是Storage Account
类型,ChileRepository
是Repository
类型
首先,当登录命令被执行时,它给了我可用订阅的列表。但是在执行 az acr build...
命令后,它会抛出如下错误消息:
错误
The resource with name 'ParentStorage' and type
'Microsoft.ContainerRegistry/registries' could not be found in
subscription 'Visual Studio Professional
(ID)'.
到目前为止我发现的是,它正在尝试在我的 Visual Studio 订阅 (S1
) 下搜索。由于 S1
是默认订阅,存储库在 S2
中。所以我将 S2
设置为默认订阅并再次尝试 但它没有用 .
事件当我尝试执行以下命令时,它抛出了同样的错误:
az acr show --name ParentStorage
P.S.: 我尝试使用特定订阅登录但无法登录。
请让我知道我在这里缺少什么。
对于您的问题,您的注册表似乎不在当前订阅中。当您使用 CLI 命令 az login
时,您将使用默认订阅登录。对于您来说,"Visual Studio Professional (ID)" 似乎是默认值。您应该检查您的注册表是否在当前订阅中。如果不是,您应该通过 CLI 命令将该订阅设置为当前订阅:
az account set --subscription subscription_id
那我建议你最好用CLI命令再次检查注册表是否存在:
az acr show -n acr_name
它将显示您的注册表信息。这一次,您可以根据需要使用 CLI 命令 az acr build
构建镜像。
另外,您可以通过CLI命令az login
.
在登录时使用参数--subscription
设置订阅
如果您有更多问题,请告诉我。或者觉得有帮助可以采纳为答案。
只需按照
中提供的答案添加额外的东西
我们可以使用下面的命令来构建特定的订阅 ID,这样当多个用户想要使用他们不同的默认订阅 ID 执行这个命令时,他们不需要将其他订阅作为他们的默认订阅。
az acr build --subscription $SubscriptionId -r $registry --platform Windows -f Dockerfile -t XYZ:v$version obj
希望这对其他人也有帮助。
我运行进入这个并发现了另一个问题。我使用的服务提供商 (SP) 只有“Acr Push”角色。我不得不添加“贡献者”角色来解决这个问题。所以看起来“Acr Push”没有足够的权限来查看 ACR 资源。
我正在使用 Azure CLI v2.0.62。
我在 Azure 中的单个帐户上确实有多个订阅 - S1、S2、S3、S4。
我正在执行以下脚本以将动态值插入存储库:
az login
az acr build "ParentStorage" --platform windows -f Dockerfile -t ChildRepository:<dynamicValue>
这里ParentStorage
是Storage Account
类型,ChileRepository
是Repository
类型
首先,当登录命令被执行时,它给了我可用订阅的列表。但是在执行 az acr build...
命令后,它会抛出如下错误消息:
错误
The resource with name 'ParentStorage' and type 'Microsoft.ContainerRegistry/registries' could not be found in subscription 'Visual Studio Professional (ID)'.
到目前为止我发现的是,它正在尝试在我的 Visual Studio 订阅 (S1
) 下搜索。由于 S1
是默认订阅,存储库在 S2
中。所以我将 S2
设置为默认订阅并再次尝试 但它没有用 .
事件当我尝试执行以下命令时,它抛出了同样的错误:
az acr show --name ParentStorage
P.S.: 我尝试使用特定订阅登录但无法登录。
请让我知道我在这里缺少什么。
对于您的问题,您的注册表似乎不在当前订阅中。当您使用 CLI 命令 az login
时,您将使用默认订阅登录。对于您来说,"Visual Studio Professional (ID)" 似乎是默认值。您应该检查您的注册表是否在当前订阅中。如果不是,您应该通过 CLI 命令将该订阅设置为当前订阅:
az account set --subscription subscription_id
那我建议你最好用CLI命令再次检查注册表是否存在:
az acr show -n acr_name
它将显示您的注册表信息。这一次,您可以根据需要使用 CLI 命令 az acr build
构建镜像。
另外,您可以通过CLI命令az login
.
--subscription
设置订阅
如果您有更多问题,请告诉我。或者觉得有帮助可以采纳为答案。
只需按照
我们可以使用下面的命令来构建特定的订阅 ID,这样当多个用户想要使用他们不同的默认订阅 ID 执行这个命令时,他们不需要将其他订阅作为他们的默认订阅。
az acr build --subscription $SubscriptionId -r $registry --platform Windows -f Dockerfile -t XYZ:v$version obj
希望这对其他人也有帮助。
我运行进入这个并发现了另一个问题。我使用的服务提供商 (SP) 只有“Acr Push”角色。我不得不添加“贡献者”角色来解决这个问题。所以看起来“Acr Push”没有足够的权限来查看 ACR 资源。