使用Artifact Registry时如何查看GCP Cloud Run服务镜像内文件
问题说明
- 现有查看Google Cloud Platform Cloud Run服务运行文件的方案,仅适配使用
Container Registry (gcr.io 存储文件)的场景。 - 当使用
Artifact Registry替代Container Registry时,需要可落地的方法查看仓库内镜像的内置文件。 - 已尝试执行以下命令进入镜像交互终端:
docker run -it --entrypoint sh europe-west1-docker.pkg.dev/bb-xyz/cloud-run-source-deploy/myservice:latest
- 执行后返回报错:
无法找到镜像(Unable to find image)
解决方法
报错核心原因是本地Docker未获得Artifact Registry的访问授权,或是镜像路径、标签填写有误,按以下步骤操作即可:
- 配置Docker对应Artifact Registry仓库区域的认证权限,执行命令:
gcloud auth configure-docker europe-west1-docker.pkg.dev
如果你的仓库不在europe-west1区域,把命令里的域名前缀替换成仓库实际所属区域即可,例如美中区域替换为us-central1-docker.pkg.dev
2. 先单独执行拉取命令,验证镜像路径和权限是否正常:
docker pull europe-west1-docker.pkg.dev/bb-xyz/cloud-run-source-deploy/myservice:latest
如果拉取失败,优先检查项目ID、仓库名、镜像名、标签是否和Artifact Registry后台显示的完全一致,确认当前登录的gcloud账号持有该镜像的拉取权限。
3. 镜像拉取成功后,重新执行进入镜像交互终端的命令,就可以用常规Linux命令浏览镜像内的所有文件:
docker run -it --entrypoint sh europe-west1-docker.pkg.dev/bb-xyz/cloud-run-source-deploy/myservice:latest
如果执行后提示找不到sh命令,说明镜像使用了极简基础镜像,可以把命令里的sh替换为bash再试;如果是distroless这类没有内置shell的镜像,可以用镜像层分析工具直接读取文件内容,不需要启动容器。
内容的提问来源于stack exchange,提问作者atreeon
相关产品推荐
相关产品推荐

