You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法从Azure容器注册表获取镜像详情,求C#登录ACR方法

解决ACR无法获取镜像详情及用户名密码登录的问题

一、排查无法获取镜像详情的问题

先纠正你当前代码里的明显错误:GetArtifact的参数传递不符合要求。第一个参数应该是仓库名(格式为{registry-name}.azurecr.io/{repository}),第二个参数是镜像的标签或摘要,你现在把kube01.azurecr.io/sensor:6(带标签的完整路径)传成第一个参数,这会导致客户端找不到对应仓库,自然拿不到镜像详情。

除此之外,还可以从以下方向排查:

  • 权限验证:不管用DefaultAzureCredential还是用户名密码,确保所用身份拥有ACR的AcrPull权限(最低要求)。如果是服务主体,要在Azure Portal确认角色已正确分配到目标ACR。
  • 镜像存在性:登录Azure Portal查看ACR仓库,或者用Azure CLI命令az acr repository show --name kube01 --repository sensor确认仓库存在,再用az acr repository show-tags --name kube01 --repository sensor检查标签6和latest是否存在。
  • 网络连通性:如果在企业内网,确认防火墙/代理允许访问ACR的HTTPS端点(443端口),可以尝试用curl https://kube01.azurecr.io/v2/测试连通性(返回401是正常的,说明端点可达)。

二、C#中使用用户名密码登录ACR

可以用AzureNamedKeyCredential传递ACR的用户名和密码,以下是修正后的完整代码:

using Azure;
using Azure.Containers.ContainerRegistry;

var registryEndpoint = new Uri("https://kube01.azurecr.io");
// ACR的用户名是注册表名称,密码是ACR的访问密钥(在Azure Portal的ACR->访问密钥里获取)
var credential = new AzureNamedKeyCredential("kube01", "your-acr-access-password");

var client = new ContainerRegistryClient(registryEndpoint, credential,
    new ContainerRegistryClientOptions()
    {
        Audience = ContainerRegistryAudience.AzureResourceManagerPublicCloud
    });

// 正确的GetArtifact用法:第一个参数是仓库名,第二个是标签
RegistryArtifact image = client.GetArtifact("kube01.azurecr.io/sensor", "6");

// 列出该镜像的所有标签
Pageable<ArtifactTagProperties> tags = image.GetAllTagProperties();

Console.WriteLine($"{image.FullyQualifiedReference} has the following aliases:");
foreach (ArtifactTagProperties tag in tags)
{
    // 注意:ArtifactTagProperties需访问Name属性才能拿到标签字符串
    Console.WriteLine($"    {image.RegistryEndpoint.Host}/{image.RepositoryName}:{tag.Name}");
}

补充注意点:

  • ACR的用户名就是你的注册表名称(比如kube01),密码可在Azure Portal的ACR资源页->访问密钥中获取(需先启用管理员账户)。
  • 若要获取latest标签的镜像,只需把GetArtifact的第二个参数改成"latest"即可。

内容的提问来源于stack exchange,提问作者Ambuj Dwivedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:25:46