如何使用私有Azure Container Registry创建Azure App Service并解决镜像不可见问题
在App Service中使用配置了私有访问的Azure容器注册表(ACR)
当你的ACR设置为「选定网络」并配置了私有终结点时,要让App Service正常访问并使用其镜像,需要完成以下配置:
1. 确保私有终结点网络连通性
- 将ACR的私有终结点部署到与App Service相同的虚拟网络,或通过虚拟网络对等互联实现网络连通。
- 启用ACR私有终结点的DNS集成,确保App Service能通过私有DNS解析到ACR的私有IP,避免流量走公网。
2. 配置App Service的网络接入
普通App Service(非应用服务环境)
开启VNet集成功能,将App Service接入到ACR私有终结点所在的虚拟网络或对等网络中,让App Service的流量通过私有网络访问ACR,符合「选定网络」的访问规则。
应用服务环境(ASE)
确保ASE所在的子网已被添加到ACR的「选定网络」允许列表中,ASE本身处于虚拟网络内,默认可访问同网络内的ACR私有终结点。
3. 配置ACR访问权限
- 给App Service的系统托管标识或用户托管标识分配ACR的
AcrPull角色,让App Service具备拉取镜像的权限。 - 若使用服务主体身份验证,需确保服务主体拥有ACR的
AcrPull权限,并在App Service的容器设置中正确配置服务主体的客户端ID和密钥。
4. 绕过门户UI限制(创建Web App时)
当ACR公网访问设为「选定网络」时,Azure门户前端从公网访问ACR,因此UI中无法直接看到镜像。可通过以下方式部署:
- 使用Azure CLI命令:
az webapp create --resource-group <你的资源组> --name <Web App名称> --plan <App Service计划> \ --docker-image <ACR名称>.azurecr.io/<镜像名>:<标签> \ --docker-registry-server-url https://<ACR名称>.azurecr.io \ --docker-registry-server-user <服务主体ID> \ --docker-registry-server-password <服务主体密钥> - 或使用ARM模板部署,直接指定ACR镜像地址和身份验证信息。
5. 验证部署
部署完成后,可通过以下方式验证:
- 查看Web App的容器日志,确认镜像拉取成功。
- 使用
az webapp log tail --name <Web App名称> --resource-group <资源组>命令查看实时日志,排查网络或权限相关错误。
内容的提问来源于stack exchange,提问作者lightbulb05
相关产品推荐
相关产品推荐

