Ubuntu终端遇Artifact Registry权限拒绝错误,求解决方案
解决方案
1. 核对仓库存在性与Docker配置域名
- 先确认目标仓库是否存在:
如果输出里找不到gcloud artifacts repositories list --project=niveustraining --location=usgcr.io仓库,要么是名称有误,要么需要先创建该仓库。另外注意:你之前配置Docker用的是europe-west1-docker.pkg.dev,但错误里的仓库区域是us,必须保证Docker配置的域名和目标仓库的区域/域名完全匹配:- 若目标是us区域的Artifact Registry,执行:
gcloud auth configure-docker us-docker.pkg.dev - 若是旧版GCR仓库,执行:
gcloud auth configure-docker gcr.io
- 若目标是us区域的Artifact Registry,执行:
2. 给账号添加上传权限
- 登录Google Cloud控制台,进入
niveustraining项目的IAM页面,找到当前使用的账号(用gcloud auth list可查看活跃账号),为其添加Artifact Registry Writer角色(该角色包含所需的artifactregistry.repositories.uploadArtifacts权限)。 - 也可通过命令行直接添加角色:
gcloud projects add-iam-policy-binding niveustraining \ --member="user:你的邮箱地址" \ --role="roles/artifactregistry.writer"
3. 确认gcloud账号与项目配置正确
- 检查当前活跃账号:
确保是你刚配置权限的账号,若不是则切换:gcloud auth listgcloud config set account 你的邮箱地址 - 检查当前项目配置:
确保是gcloud config get-value projectniveustraining,若不是则切换:gcloud config set project niveustraining
4. 刷新Docker认证
- 执行命令刷新Docker的gcloud认证(注意替换为对应仓库域名):
(如果是GCR仓库,把域名换成gcloud auth print-access-token | docker login -u oauth2accesstoken --password-stdin https://us-docker.pkg.devgcr.io)
内容的提问来源于stack exchange,提问作者Raja K
相关产品推荐
相关产品推荐

