无法向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环境下可能导致普通用户无法读取凭证。修改配置文件:
- 编辑
~/.docker/config.json,删除"credsStore": "desktop.exe"这一行 - 执行
docker logout <containerRegistryName>.azurecr.io清理旧认证 - 重新执行
docker login <containerRegistryName>.azurecr.io,此时认证信息会直接写入config.json的auths字段中
2. 刷新Docker组权限
即使已加入docker组,当前会话可能未加载最新权限:
- 执行
newgrp docker刷新组权限,无需重新登录 - 验证docker组权限:
确保输出显示组为ls -l /var/run/docker.sockdocker且权限为rw-rw----,若不符合则执行:sudo chown root:docker /var/run/docker.sock sudo chmod 660 /var/run/docker.sock
3. 手动使用Azure CLI凭证登录
绕过凭证存储问题,直接用Azure CLI获取token登录:
- 获取ACR登录token:
az acr login --name <containerRegistryName> --expose-token - 使用返回的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
相关产品推荐
相关产品推荐

