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

VS Code中docker login登录epregistry.azurecr.io报403如何解决

问题成因

这个报错不是密码输入错误导致的(密码错误会返回明确的401鉴权失败提示,不会出现空响应体的JSON解析错误),核心原因是请求到ACR(Azure容器注册表)v2接口的链路被拦截,返回了无内容的403响应,Docker无法按预期解析JSON格式的错误信息,触发该报错,常见触发场景如下:

  • 本地网络代理、VPN、防火墙规则拦截了对epregistry.azurecr.io的请求,拦截层直接返回空403响应,没有走到Azure ACR的服务端
  • ACR实例配置了公网访问限制:比如开启了专用端点、公网访问被禁用、IP白名单未包含当前环境的出口IP,公网请求被Azure边缘层直接拦截,返回空403
  • 本地Docker客户端的代理配置错误,请求被无效代理拦截返回空响应
排查解决步骤

按以下顺序逐一验证,定位问题后修复即可:

  1. 先验证链路连通性
    在终端执行命令:
curl -v https://epregistry.azurecr.io/v2/

观察返回的响应头:

  • 如果响应里没有x-ms-request-id这类Azure服务专属的响应头,直接返回空403,说明是本地网络/代理/VPN拦截,关闭代理、切换网络(比如手机热点)后重新尝试登录即可
  • 如果响应包含Azure服务标识,提示客户端IP不在允许访问范围内,登录Azure门户找到对应ACR实例,进入「网络」配置页,将当前环境的公网出口IP加入访问白名单,或临时开启公网访问测试连通性
  1. 校验ACR基础配置
  • 确认登录地址epregistry.azurecr.io拼写正确,无多余或缺失字符
  • 进入ACR实例的「访问密钥」页,确认管理员用户开关为开启状态,登录用户名为注册表名epregistry,密码为该页面生成的主密钥/辅助密钥,不要使用Azure全局账号的密码登录
  • 如果ACR仅配置了专用端点访问,确认当前操作环境已经通过VPN、VNet对等方式接入到ACR所在的虚拟网络,否则公网环境无法正常连接
  1. 校验本地Docker配置
    打开Docker Desktop设置页,进入「Resources - Proxies」配置项,确认代理配置正确,无错误的拦截规则,可临时关闭代理配置后重试登录;也可执行docker info命令查看输出末尾的代理配置项,确认系统环境变量里没有残留的无效代理配置。

验证标准:当执行curl访问v2接口能正常返回401 Unauthorized提示(要求输入鉴权信息)时,说明链路已经连通,此时再执行docker login epregistry.azurecr.io输入正确的用户名密码即可正常登录,不会再出现JSON解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:51:21