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

Azure Web App拉取Docker容器失败问题排查求助

问题排查与解决方案

1. 镜像路径不匹配问题

从错误日志可见,Web App尝试拉取的镜像路径为:

clothinginsecuritydocker.azurecr.io/clothinginsecuritydocker/prod:ba2cad09552128b3aabfc6a7d526c71dd4adc7d4

但你本地推送的镜像路径是:

clothinginsecuritydocker.azurecr.io/prod:latest

路径多了一层clothinginsecuritydocker,这会导致镜像不存在,进而触发ACR返回认证失败提示(镜像不存在时ACR的错误提示常包含认证信息)。

解决步骤:

  • 检查GitHub Actions部署脚本,确保推送和拉取的镜像标签路径完全一致,比如统一使用clothinginsecuritydocker.azurecr.io/prod:<commit-sha>格式
  • 登录ACR查看现有镜像仓库,确认路径正确性:
    az acr repository list --name clothinginsecuritydocker --output table
    

2. 容器用户ID映射问题

错误日志开头的Container ID 718322462 cannot be mapped to a host ID,是因为镜像中使用的用户UID超出了Azure App Service容器环境允许的范围(通常限制在10000以内)。

解决步骤:

  • 修改Dockerfile,创建并使用低UID用户运行容器:
    RUN useradd -u 10001 appuser
    USER appuser
    
  • 若需快速排查,可临时在Dockerfile中添加USER root(不推荐生产环境),验证是否为UID映射问题导致启动失败

3. ACR认证凭据配置问题

即使启用了ACR管理员用户,Web App仍可能存在凭据配置错误:

  • 检查Web App的容器设置,确认ACR服务器地址、管理员用户名、密码填写正确(密码需为ACR的管理员密码,而非Azure CLI登录令牌)
  • 推荐使用Azure AD托管身份替代管理员用户(更安全):
    1. 为Web App的系统分配托管身份添加ACR的AcrPull角色
    2. 在Web App容器设置中选择"使用托管身份"作为认证类型,无需手动填写用户名密码

4. 容器缓存清理

若之前拉取失败留下损坏的缓存层,可尝试:

  • 在Azure门户重启Web App,强制重新拉取镜像
  • 使用Azure CLI重置容器配置,触发镜像重新拉取:
    az webapp config container set --name clothinginsecurityserver --resource-group <你的资源组名称> --docker-custom-image-name <正确镜像路径> --docker-registry-server-url https://clothinginsecuritydocker.azurecr.io
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 03:42:23