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

使用Az CLI创建Azure容器实例时无法拉取私有ACR镜像

解决方案:私有子网中ACI无法访问私有ACR的问题

你遇到的核心问题其实是部署在私有子网的容器实例(ACI)默认没有出站互联网访问能力——虽然你的服务主体权限完全正常,公共镜像能部署也说明子网的基础网络配置没问题,但私有ACR需要网络连通才能拉取镜像,而默认状态下私有子网里的ACI没法访问公网(你的ACR如果没配置私有端点的话,是需要公网访问的),所以才会出现镜像不可访问的错误。

下面给你两种针对性的解决方案,你可以根据自身场景选择:

方案一:给子网配置NAT网关,提供出站公网访问

如果你的场景允许ACI访问公网,这种方式最简单直接,通过NAT网关让子网内的ACI获得出站公网能力,从而能正常拉取ACR镜像:

  1. 先创建NAT网关(如果还没有的话):
az network nat gateway create \
  --name myNATGateway \
  --resource-group myResourceGroup \
  --public-ip-addresses myPublicIP \
  --location someLocation
  1. 将你的私有子网关联到这个NAT网关:
az network vnet subnet update \
  --name someSubnet \
  --resource-group myResourceGroup \
  --vnet-name someVNET \
  --nat-gateway myNATGateway
  1. 重新运行你之前的容器部署命令,此时ACI就能通过NAT网关出站访问ACR拉取镜像了。

方案二:给ACR配置私有端点,实现VNet内部访问

如果你的场景不允许ACI访问公网,推荐用这种方式,把ACR直接接入到你的VNet中,让子网内的ACI通过私有IP访问ACR:

  1. 为ACR创建私有端点:
az network private-endpoint create \
  --name myACRPrivateEndpoint \
  --resource-group myResourceGroup \
  --vnet-name someVNET \
  --subnet someSubnet \
  --private-connection-resource-id $(az acr show --name someRegistry --query id --output tsv) \
  --group-id registry \
  --connection-name myACRConnection
  1. 创建对应ACR的私有DNS区域(用于解析ACR的私有IP):
az network private-dns zone create \
  --name "privatelink.azurecr.io" \
  --resource-group myResourceGroup
  1. 将私有DNS区域关联到你的VNet:
az network private-dns link vnet create \
  --name myDNSLink \
  --resource-group myResourceGroup \
  --zone-name "privatelink.azurecr.io" \
  --virtual-network someVNET \
  --registration-enabled false
  1. 为ACR私有端点添加DNS记录:
az network private-endpoint dns-zone-group create \
  --name myDNSZoneGroup \
  --resource-group myResourceGroup \
  --endpoint-name myACRPrivateEndpoint \
  --private-dns-zone "privatelink.azurecr.io" \
  --zone-name registry
  1. 再次运行容器部署命令,此时ACI会通过VNet内部的私有IP访问ACR,完全不需要出站公网。

验证操作

不管用哪种方案,部署完成后你可以用下面的命令检查容器实例状态,确认镜像拉取是否成功:

az container show --name myContainerGroup --resource-group myResourceGroup --query instanceView.state

如果返回Running,就说明问题解决了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:07:47