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

无法向Azure ACR推送Docker镜像的问题求助

解决Azure容器注册表(ACR)推送失败及凭证存储问题

核心问题分析

  • 执行docker push时提示unauthorized: authentication required,但登录命令显示成功
  • ~/.docker/config.json中对应ACR的认证信息为空,且配置了credsStore: desktop.exe
  • 使用sudo可正常操作,但普通用户(已加入docker组)无法执行

解决方案

1. 修复Docker凭证存储配置

credsStore: desktop.exe是Windows Docker Desktop的凭证存储方式,在WSL或Linux环境下可能导致普通用户无法读取凭证。修改配置文件:

  1. 编辑~/.docker/config.json,删除"credsStore": "desktop.exe"这一行
  2. 执行docker logout <containerRegistryName>.azurecr.io清理旧认证
  3. 重新执行docker login <containerRegistryName>.azurecr.io,此时认证信息会直接写入config.json的auths字段中

2. 刷新Docker组权限

即使已加入docker组,当前会话可能未加载最新权限:

  • 执行newgrp docker刷新组权限,无需重新登录
  • 验证docker组权限:
    ls -l /var/run/docker.sock
    
    确保输出显示组为docker且权限为rw-rw----,若不符合则执行:
    sudo chown root:docker /var/run/docker.sock
    sudo chmod 660 /var/run/docker.sock
    

3. 手动使用Azure CLI凭证登录

绕过凭证存储问题,直接用Azure CLI获取token登录:

  1. 获取ACR登录token:
    az acr login --name <containerRegistryName> --expose-token
    
  2. 使用返回的token执行docker登录(用户名固定为00000000-0000-0000-0000-000000000000):
    docker login <containerRegistryName>.azurecr.io -u 00000000-0000-0000-0000-000000000000 -p <获取到的token>
    

4. 检查WSL与Docker Desktop集成(仅WSL环境)

确保WSL与Docker Desktop的集成正常:

  • 打开Docker Desktop设置 → Resources → WSL Integration
  • 勾选当前使用的WSL发行版,点击"Apply & Restart"
  • 重启WSL会话:wsl --shutdown后重新打开终端

关于HELM_COMMAND_ERROR

该错误是az acr check-health检查Helm是否安装导致,若无需使用Helm与ACR的集成,可直接忽略;如需解决,安装Helm即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 21:33:11