Docker for Windows执行docker push报错:insufficient_scope: authorization failed
排查与解决步骤
1. 确认本地仓库的权限配置
如果你的本地Registry启用了认证,务必确保所用账号拥有**推送(push)**权限:
- 打开Registry的配置文件(如
config.yml),检查capabilities字段是否包含push:capabilities: - pull - push - 若缺少
push,添加后重启Registry服务;如果是用htpasswd管理账号,重新生成带权限的凭证:
输入密码后重启Registry。htpasswd -B -c /path/to/htpasswd your-username
2. 重新登录本地仓库
Docker客户端的登录会话可能过期或未关联正确权限,重新登录即可:
- 先登出:
docker logout localhost:5000 - 用拥有push权限的账号重新登录:
输入账号密码后再执行推送。docker login localhost:5000
3. 检查镜像标签是否正确
Docker默认会把无仓库地址的镜像推送到Docker Hub,这会导致权限不匹配:
- 给镜像打上本地仓库的标签(替换
localhost:5000为你的仓库地址,my-image:v1为你的镜像信息):docker tag my-image:v1 localhost:5000/my-image:v1 - 再执行推送:
docker push localhost:5000/my-image:v1
4. 清除Windows上的Docker凭证缓存
Windows的凭据管理器可能缓存了旧的权限不足的凭证:
- 打开「控制面板」→「凭据管理器」→「Windows凭据」,找到本地仓库相关的条目(如
localhost:5000),删除后重新登录Docker。 - 重启Docker Desktop,确保缓存完全清除。
5. 处理TLS证书问题(若本地仓库用HTTPS)
如果本地仓库启用了HTTPS但Docker未信任证书,会间接导致授权异常:
- 将仓库的CA证书复制到Docker证书目录:
C:\ProgramData\Docker\certs.d\localhost:5000\ca.crt - 重启Docker Desktop后再尝试推送。
内容的提问来源于stack exchange,提问作者Yiftach Cohen
相关产品推荐
相关产品推荐

