Jetson设备从GCP Artifact Registry拉取Docker镜像认证失败问题
Jetson设备无法从Google Artifact Registry拉取Docker镜像
问题背景
普通Ubuntu服务器能正常从Google Artifact Registry拉取Docker镜像,但**Jetson设备(ARM架构、Python 3.8)**始终失败。已激活的服务账号配置了OWNER和Registry Admin权限,gcloud auth list可正常显示该账号。
已执行操作
# 安装Docker curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh # 安装并配置gcloud sudo apt-get -y install apt-transport-https ca-certificates gnupg curl sudo echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - sudo apt-get update && sudo apt-get -y install google-cloud-cli gcloud auth activate-service-account --key-file="./sa.json" # 配置Docker与Artifact Registry的认证 gcloud auth configure-docker europe-docker.pkg.dev
拉取命令及错误提示
执行拉取命令:
docker pull europe-docker.pkg.dev/PROJECT/docker/cam-recorder-qa:277dacbdf2c5a105b7e86c771bccb4036e943198
返回错误:
Error response from daemon: Head "https://europe-docker.pkg.dev/v2/PROJECT/docker/cam-recorder-qa/manifests/277dacbdf2c5a105b7e86c771bccb4036e943198": denied: Unauthenticated request. Unauthenticated requests do not have permission "artifactregistry.repositories.downloadArtifacts" on resource "projects/PROJECT/locations/europe/repositories/docker" (or it may not exist)
解决方法
1. 检查Docker认证文件的权限与位置
Jetson上执行gcloud auth configure-docker后,认证配置默认存在当前用户的~/.docker/config.json中,但如果用sudo执行docker pull,Docker会读取/root/.docker/config.json,导致认证失效。
先确认当前用户的配置文件是否包含Artifact Registry的认证条目:
cat ~/.docker/config.json需确保有
"europe-docker.pkg.dev": "gcloud"这类配置。如果用sudo拉取,把认证文件复制到root目录:
sudo cp ~/.docker/config.json /root/.docker/ sudo chown root:root /root/.docker/config.json
2. 手动生成Docker认证令牌
ARM架构下gcloud自动配置可能存在兼容问题,可手动生成认证令牌并登录:
gcloud auth print-access-token | sudo docker login -u oauth2accesstoken --password-stdin europe-docker.pkg.dev
执行完成后再次尝试拉取镜像。
3. 更新gcloud到最新版本
Jetson的ARM架构可能适配旧版gcloud存在问题,更新后重新配置:
sudo gcloud components update gcloud auth configure-docker europe-docker.pkg.dev
4. 确认镜像支持ARM架构
虽然报错是认证问题,但也可排查镜像是否适配Jetson的ARM64架构:
gcloud artifacts docker images describe europe-docker.pkg.dev/PROJECT/docker/cam-recorder-qa:277dacbdf2c5a105b7e86c771bccb4036e943198 --format='value(image_summary.mediatypes)'
若输出中没有对应ARM64的manifest类型,说明镜像不兼容,但这类情况通常不会报认证错误,可作为兜底排查项。
内容的提问来源于stack exchange,提问作者RaShe
相关产品推荐
相关产品推荐

