问题描述

基于目前对Azure的资源的安全性合规要求,都需要开启防火墙并且关闭公网访问。 当ACR ( Azure Container Registries )启用了防火墙并关闭公网访问后。

引起了一个新的问题:Container App无法拉取ACR中的镜像!

错误信息:

{"TimeStamp":"2025-07-30 12:58:24.9603413 \u002B0000 UTC","Type":"Warning","ContainerAppName":"xxxxx","RevisionName":"xxxxx--0000001","ReplicaName":"xxxxx--0000001-56db958c8b-k97xk","Msg":"Container \u0027xxxxx\u0027 was terminated with exit code \u0027\u0027 and reason \u0027ImagePullFailure\u0027. Pull image: xxxxxxx.azurecr.cn/mynodejsalbum:v1 failed with exit code: 1, error: time=\u00222025-07-30T12:58:24Z\u0022 level=info msg=\u0022trying next host\u0022 error=\u0022failed to authorize: failed to fetch anonymous token: unexpected status from GET request to https://xxxxxxx.azurecr.cn/oauth2/token?scope=repository%3Amynodejsalbum%3Apull\u0026service=xxxxxxx.azurecr.cn: 403 Forbidden\u0022 host=xxxxxxx.azurecr.cn\nctr: failed to resolve reference \u0022xxxxxxx.azurecr.cn/mynodejsalbum:v1\u0022: failed to authorize: failed to fetch anonymous token: unexpected status from GET request to https://xxxxxxx.azurecr.cn/oauth2/token?scope=repository%3Amynodejsalbum%3Apull\u0026service=xxxxxxx.azurecr.cn: 403 Forbidden\n.","Reason":"ContainerTerminated","EventSource":"ContainerAppController","Count":1}

问题解答

这个问题的原因有两点:

1) ACR 中没有设置允许ACA访问的白名单

2) ACA的出口IP地址并不固定。它可能会使用所在数据中心的出口IP段中的某一个IP,如果要指定固定的出口IP,需要使用NAT Gateway来实现!

基于以上原因,这里推荐使用ACR的Private Endpint来解决访问403问题 ( https://learn.microsoft.com/en-us/azure/container-registry/container-registry-private-link )

PS: 为何在启用了Azure Trusted Services后,Azure数据中心的服务也无法访问呢? 原因是目前ACR指支持四种服务可以Bypass访问。ACA不在其中!

  1. Azure Container Instances
  2. Microsoft Defender for Cloud
  3. Machine Learning Azure
  4. Container Registry

配置Private Endpint的步骤简单,但是需要注意:必须选择与ACA所在的VNET相通的网络(同一个VNET或之间有peering) 。

最好 最好 是启用Private Endpint后,在ACA中使用 curl -v https://<yourACRhost> 来验证是否是私网IP地址,是否可以连通!

如下图测试结果:

PS:如果在配置Container App的页面中发现无法列出当前ACR的镜像列表,这是因为当前浏览器所在的环境的IP地址无法访问ACR,在ACR中添加当前IP地址访问后就可以解决此问题!

参考资料

Trusted services :https://learn.microsoft.com/en-us/azure/container-registry/allow-access-trusted-services

Connect privately to an Azure container registry using Azure Private Link : https://learn.microsoft.com/en-us/azure/container-registry/container-registry-private-link

【Container App】Container App无法从Container Registries 拉取镜像 - 报错 403 Forbidden的更多相关文章

  1. eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错? java.lang.ClassNotFoundException: com.branchitech.app.startup.AppStartupContextListener java.lang.ClassN

    eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错?java. ...

  2. ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/u01/app/oracle/product/19.2.0/db_1/dbs/initsanshi.ora'报错

    本人是在Linux安装Oracle19C之后,启动数据库时,XSHELL命令行窗口报的该错误,看了几个解决方案之后,总结如下 从字面的意思来看,是在dbs目录当中没有这个initsanshi.ora文 ...

  3. 关于App自动化执行链接Appium服务包名正确但是报错An unknown server-side error occurred while processing the command

    在执行链接Appium服务时连接失败可能原因: 1.报错截图: 2.先检查包名是否正确(正常情况下包名不会错误)通过命令行查看包名:aapt dump badging xxx.apk 3.检查对应包的 ...

  4. spark运行任务报错:Container [...] is running beyond physical memory limits. Current usage: 3.0 GB of 3 GB physical memory used; 5.0 GB of 6.3 GB virtual memory used. Killing container.

    spark版本:1.6.0 scala版本:2.10 报错日志: Application application_1562341921664_2123 failed 2 times due to AM ...

  5. docker起不来报错:Failed to start Docker Application Container Engine.

    报错信息如下: [root@localhost localdisk]# systemctl restart docker Job for docker.service failed because t ...

  6. Eclipse中启动tomcat报错:A child container failed during start

    我真的很崩溃,先是workspace崩了,费了好久重建的workspace,然后建立了一个小demo项目,tomcat中启动却报错,挑选其中比较重要的2条信息如下: A child container ...

  7. 解决Eclipse 项目报错:Unbound classpath container

    Eclipse出现下面两条报错: The project cannot be built until build path errors are resolved HelloWord Unknown ...

  8. Eclipse Maven项目报错2之A child container failed during start

    问题:在同事那里拿了一个Eclipse的maven项目,导入报错,主要显示的是A child container failed during start 具体错误如下 六月 02, 2018 12:0 ...

  9. 解决Eclipse 项目报错:Unbound classpath container: ‘JRE System Library [JavaSE-1.7]

    MyEclipse出现下面两条报错: The project cannot be built until build path errors are resolved HelloWord Unknow ...

  10. ClouderaManager启动NodeManager失败!报错Failed to initialize container executor

    报错信息: 2016-07-27 10:53:14,102 WARN org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: ...

随机推荐

  1. TVM Pass优化 -- 公共子表达式消除(Common Subexpr Elimination, CSE)

    定义(What) 公共子表达式消除 就是如果表达式E的值已经计算的到了,并且自计算的到值后E的值就不再改变了,就说,表达式E在后续计算中是一个公共表达式. 简单说,该表达式上面已经执行过了,下面没必要 ...

  2. 将Spring Boot项目部署到自己的服务器上

    第一步: 先准备好MobaXterm,链接上服务器后进入宝塔面板 https://www.bt.cn/new/download.html 找到Linux面板安装脚本复制命令 第二步: 进入MobaXt ...

  3. codeup之奖金计算

    codeup c2奖金计算 Description 某企业发放的奖金根据利润提成.利润I低于或等于100000时,奖金可提10%:利润高于100000元,低于200000元(100000<I&l ...

  4. 解决Spring Boot项目后端接口返回数据中文乱码问题

    摘要 解决 Spring Boot 项目中,后端返回前端的结果出现中文乱码的问题.   这几天在使用 Spring Boot 学习AOP原理的时候,通过浏览器访问后端接口的时候,响应报文总是出现中文乱 ...

  5. 「Trick」常见错误

    爆 int 了吗? 爆 long long 了吗? 进行 \(\bmod\) 时有爆掉或负数吗? 数组开大了吗?(\(N,M\) 用反了?) 变量重名了吗? 赋初值了吗? 不要在 printf 或者 ...

  6. AI时代Hello World详细教程之LLM微调(SFT)

    [00]时代变了 移动互联网时代的Hello World(参见Xamarin 使用极光推送 详细教程 ),安装某一套开发工具包(IDE)就够了,AI时代就明显要的就多了. 依然直奔主题,无废话,直接上 ...

  7. 现代 Python 包管理器 `uv`

    用 uv + Python 开发命令行工具 当使用 uv 写正规一点的 CLI 应用的时候,还是应该使用 uv init --package [package name] 因为写一个命令行程序总是要安 ...

  8. Tauri2.0-DeepSeek电脑端Ai对话|tauri2+vite6+deepseek流式ai聊天系统

    重磅新作tauri2.0+vue3.5+deepseek+arco桌面客户端ai流式输出聊天对话系统. tauri2-vue3-deepseek:桌面端ai聊天对话,基于Tauri2.x+Vite6集 ...

  9. 袋鼠云数栈 DataOps 数据生产力实践,实现数据流程的自动化和规范化

    袋鼠云产品团队在帮助企业进行数字化转型实践的过程中,发现很多企业在数据生产链路上都有着相同的问题.包括数据团队聚焦于业务需求短期内的快速交付,内部缺少自顶向下的数据生产管理制度,在数据标准.数据生产流 ...

  10. FastAPI权限校验漏洞防护,你真的做对了吗?

    title: FastAPI权限校验漏洞防护,你真的做对了吗? date: 2025/06/25 09:01:42 updated: 2025/06/25 09:01:42 author: cmdra ...