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

无法从WSL(Ubuntu 24.04 LTS)推送至Azure容器注册表

问题描述

从WSL(Ubuntu 24.04 LTS)向Azure Container Registry(ACR)推送镜像时,收到授权错误:

unauthorized: {"errors":[{"code":"UNAUTHORIZED","message":"authentication required, visit https://aka.ms/acr/authorization for more information."}]}

已完成的排查步骤:

  • ACR已启用管理员用户
  • 安装helm和notary后,az acr health-check -n <myacr> -y执行成功,完成拉取验证、DNS查询、令牌获取、Docker Daemon可用性检查
  • Docker及ACR登录正常,cat ~/.docker/config.json显示auths包含index.docker.io和目标ACR的配置
  • az acr show --name <myacr>显示publicNetworkAccess已启用,多数策略禁用,无异常配置
  • 查阅官方排查文档未找到有效思路,未使用代理,排除防火墙问题(健康检查已通过)
解决方案建议
  • 重新验证ACR登录凭据
    手动执行docker login <myacr>.azurecr.io,输入管理员用户名和密码后立即尝试推送,避免config.json中存储的凭据过期或错误。

  • 检查镜像标签格式
    确保镜像标签严格符合ACR规范:<acr-name>.azurecr.io/<repository-name>:<tag>,例如先执行docker tag local-image <myacr>.azurecr.io/my-repo:v1,再推送。

  • 清理Docker凭据缓存
    执行docker logout <myacr>.azurecr.io后重新登录,或直接删除~/.docker/config.json文件再重新配置登录,清除可能存在的无效缓存凭据。

  • 使用Azure CLI自动登录ACR
    运行az acr login --name <myacr>,该命令会自动获取临时访问令牌并配置Docker,跳过手动输入凭据的环节,避免人为错误。

  • 检查角色权限(若使用服务主体)
    若通过服务主体访问ACR,确认该主体已被分配AcrPush角色。可执行az role assignment list --assignee <服务主体ID> --scope /subscriptions/<订阅ID>/resourceGroups/<资源组>/providers/Microsoft.ContainerRegistry/registries/<myacr>验证权限配置。

  • 确认WSL与Docker后端的连接
    若使用Docker Desktop作为WSL的Docker后端,检查echo $DOCKER_HOST是否返回正确的套接字路径,同时在Docker Desktop设置中确认已启用对应Ubuntu发行版的WSL集成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:57:09