Mac M1用Rancher Desktop+Docker Buildx推镜像遇insufficient_scope授权失败
在M1 MacBook Pro上用Rancher Desktop构建多平台Docker镜像时推送报错
我在MacBook Pro M1上使用Rancher Desktop构建并发布支持amd64和arm64的多平台Docker镜像,执行了以下命令:
docker buildx create --name my-app-image-builder --platform linux/arm64,linux/arm/v8 docker buildx build --builder my-app-image-builder --platform linux/amd64,linux/arm64 -o type=registry -t my-app:latest .
原本期望推送至本地仓库测试,但构建正常,推送阶段出现错误:
[exec] #38 exporting to image [exec] #38 exporting layers done [exec] #38 exporting manifest sha256:e78442aec2edae5e87fe3cd35cdcc0f66d8040febc1fed5aae6b98a03d20cfe9 done [exec] #38 exporting config sha256:073bd50a7bcdbb168aa4667444d10b4941c1e4c645bd6300828e1a8caa27864f done [exec] #38 exporting manifest sha256:7fe8dfdd7b5ba6b46a6018c57fdf19b5476fb98e0cb95934a78f5ca68db3f54d done [exec] #38 exporting config sha256:43f1ccc2b69eac343d84a25aa4df06c03b49dba2c18f49a7505d61d6bc26a30a done [exec] #38 exporting manifest list sha256:3eedf89c68a733854f0bd50a0eefed2858c150a8a73c63bee4a3deab2e5e47ce done [exec] #38 pushing layers [exec] #38 pushing layers 1.3s done [exec] #38 ERROR: server message: insufficient_scope: authorization failed [exec] ------ [exec] > exporting to image: [exec] ------ [exec] ERROR: failed to solve: server message: insufficient_scope: authorization failed
版本信息:
- Rancher desktop version: 1.6.2
- macOS Monterey version: 12.6.1
- Docker version: 20.10.17-rd, build c2e4e01
- Docker buildx version: github.com/docker/buildx v0.9.1 ed00243a0ce2a0aee75311b06e32d33b44729689
不确定是操作失误还是Rancher Desktop的Docker实现存在限制,求相关线索或解决方向。
解决方向
1. 本地仓库权限与标签检查
如果推送的是本地私有仓库:
- 先执行
docker login <本地仓库地址>完成认证,确保当前用户拥有推送权限; - 检查镜像标签是否带本地仓库前缀,比如本地仓库端口是5000的话,标签应该是
localhost:5000/my-app:latest,否则Docker会默认推送到Docker Hub,导致权限不足。
2. 修正Buildx构建器配置
创建构建器时指定的平台和构建时的目标平台不完全匹配,重新创建适配的构建器:
docker buildx create --name my-app-image-builder --platform linux/amd64,linux/arm64 --use
创建后直接使用该构建器,再执行构建推送命令。
3. Rancher Desktop环境适配排查
- 切换容器运行时:在Rancher Desktop设置中确认"Container Runtime"选择的是Docker(部分版本默认是containerd,会影响buildx的推送逻辑);
- 重置环境:重启Rancher Desktop,尝试重置Docker缓存或Kubernetes环境(在设置的"Reset"选项中操作);
- 检查用户权限:执行
groups命令确认当前用户在docker用户组中,若不在,添加后重新登录系统。
4. 调整Buildx输出方式
先将多平台镜像加载到本地Docker daemon,再手动推送:
docker buildx build --builder my-app-image-builder --platform linux/amd64,linux/arm64 -o type=docker -t my-app:latest . docker push my-app:latest
这种方式可以绕过buildx直接推送的权限问题,同时验证镜像是否能正常加载。
内容的提问来源于stack exchange,提问作者fraggers
相关产品推荐
相关产品推荐

