繁体   English   中英

Azure 容器实例 Python API - 无法从 Azure 容器注册表获取映像

[英]Azure Container Instances Python API - fails to fetch image from Azure Container Registry

根据本指南,我编写了适用于默认映像(“microsoft/aci-helloworld”)的示例代码,但在从 Azure 订阅中的 Azure 容器注册表更改为映像时失败。

错误信息是:

 The image 'mytest.azurecr.io/myimage:latest' in container group '' is not accessible. Please check the image and registry credential.

我发现了这个类似的 SO 线程,但示例代码已经使用了该问题的解决方案(使用基于文件的身份验证)。

我还尝试了带/不带“:latest”后缀的图像名称,并确保“docker pull mytest.azurecr.io/myimage:latest”成功。


编辑:添加 ACR 屏幕截图:

在此处输入图片说明

注意:我也尝试过 C# 代码示例(根据类似的 SO 线程),并收到相同的错误。 我可能遗漏了一些与配置相关的东西。 如何允许服务主体访问 ACR? 我根据指南创建了主体:

az ad sp create-for-rbac --sdk-auth > my.azureauth

这是否意味着此服务主体应该可以访问同一订阅中的任何 ACR?

缺少的部分是添加 ACR 的凭据。 固定代码看起来像这样(您必须在 ImageRegistryCredential 实例中设置服务器、用户名和密码):

        credentials = [ImageRegistryCredential(server='myregistry.azurecr.io', username='acr_username', password='acr_password')]

        group = ContainerGroup(location=resource_group.location,
                containers=[container],
                os_type=OperatingSystemTypes.linux,
                ip_address=group_ip_address,
                image_registry_credentials=credentials)

根据我的经验,你得到的错误是图像名称错误,说明在ACR中找不到该图像。 如屏幕截图所示,图像名称必须是xxxtestaci.azurecr.io/tempxxx:latestxxxtestaci.azurecr.io/tempxxx 重现错误也很容易:

在此处输入图片说明

对于 ACR 的凭据,您可以按照Azure 容器注册表身份验证中的步骤使用服务主体 但是,如果您在创建资源和从 ACR 中提取映像时仅使用一个服务主体,我建议您授予服务主体Contributor角色。

这是否意味着此服务主体应该可以访问同一订阅中的任何 ACR?

默认情况下,CLI 命令az ad sp create-for-rbac使用默认参数--role Contributor 所以是的,它可以访问同一订阅中的任何 ACR。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM