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

GCE VM环境下如何为containerd CLI工具ctr配置GCR访问权限

ctr拉取GCR镜像401未授权问题解决方案

报错本质是ctr缺少GCR的身份认证凭证,按以下步骤操作即可解决:

方法一:单次拉取时指定认证参数(无需持久化配置)

  • 第一步:获取GCP访问令牌,GCE VM实例默认绑定服务账号的前提下,直接执行如下命令生成令牌:
    TOKEN=$(gcloud auth print-access-token)
  • 第二步:拉取镜像时携带认证参数,GCR固定用户名为oauth2accesstoken,密码为上一步生成的令牌:
    sudo ctr images pull --user oauth2accesstoken:$TOKEN gcr.io/<你的镜像路径>:<标签>

方法二:持久化配置,无需每次拉取携带参数

方式1:复用Docker认证配置(无Docker也可使用)

如果你有GCP服务账号的JSON密钥文件,直接执行如下命令生成认证配置即可:

  1. 创建Docker配置目录:mkdir -p ~/.docker
  2. 写入认证信息:cat <服务账号密钥文件路径> | docker login -u _json_key --password-stdin https://gcr.io
    如果使用sudo执行ctr命令,需要将生成的~/.docker/config.json复制到root用户的对应路径下:sudo cp ~/.docker/config.json /root/.docker/

方式2:直接修改containerd配置文件

编辑/etc/containerd/config.toml,找到对应registry配置段,添加GCR的认证信息:

[plugins."io.containerd.grpc.v1.cri".registry.configs."gcr.io".auth]
  username = "oauth2accesstoken"
  password = "<你的GCP访问令牌>"

修改完成后重启containerd服务生效:sudo systemctl restart containerd

注意事项

你使用的服务账号需要被授予roles/storage.objectViewer权限,对应GCR后端存储Bucket的读权限,否则即使配置了正确的认证信息也会拉取失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 16:45:03