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

Cloud Build构建带commit哈希镜像,Container OS VM拉取latest报错如何解决

问题原因

  1. 你手动创建Container OS虚拟机时,配置部署的容器镜像未指定标签,GCE的konlet容器启动代理默认会使用latest标签拉取镜像。但你当前的Cloud Build配置仅为镜像绑定了commit哈希标签,没有构建并推送latest标签的镜像,因此拉取时触发找不到镜像的报错。
  2. 你当前的Cloud Build流程仅完成了Cloud Run服务的更新,没有添加更新虚拟机容器配置的步骤,即使镜像存在也无法实现代码推送后自动同步到VM的需求。

修复方案

方案一:新增latest标签适配现有VM配置(操作最简单)

修改你的cloudbuild.yaml,在构建和推送镜像时同时生成commit哈希和latest两个标签,适配VM默认的拉取规则:

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', 
         '-t', 'gcr.io/$PROJECT_ID/$IMAGE:$COMMIT_SHA', 
         '-t', 'gcr.io/$PROJECT_ID/$IMAGE:latest',
         './folder_name']
- name: 'gcr.io/cloud-builders/docker'
  args: ['push', 'gcr.io/$PROJECT_ID/$IMAGE:$COMMIT_SHA']
- name: 'gcr.io/cloud-builders/docker'
  args: ['push', 'gcr.io/$PROJECT_ID/$IMAGE:latest']
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
  entrypoint: gcloud
  args:
  - 'run'
  - 'deploy'
  - 'run-public-email'
  - '--image'
  - 'gcr.io/$PROJECT_ID/$IMAGE:$COMMIT_SHA'
  - '--region'
  - 'us-central1'
# 新增更新VM容器配置的步骤,替换为你自己的VM可用区和VM名称
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
  entrypoint: gcloud
  args:
  - 'compute'
  - 'instances'
  - 'update-container'
  - '你的VM名称'
  - '--zone'
  - '你的VM可用区,比如us-central1-a'
  - '--container-image'
  - 'gcr.io/$PROJECT_ID/$IMAGE:latest'
images:
- 'gcr.io/$PROJECT_ID/$IMAGE:$COMMIT_SHA'
- 'gcr.io/$PROJECT_ID/$IMAGE:latest'

配置完成后需要给Cloud Build默认服务账号授予虚拟机编辑权限:在IAM页面找到[项目号]@cloudbuild.gserviceaccount.com账号,添加「Compute Instance Admin (v1)」角色即可。

方案二:不使用latest标签,直接指定commit哈希更新VM

如果需要避免latest标签可能带来的版本混淆问题,可以直接在更新VM的步骤中传入本次构建的commit哈希标签:

# 仅需替换上方方案中的VM更新步骤即可
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
  entrypoint: gcloud
  args:
  - 'compute'
  - 'instances'
  - 'update-container'
  - '你的VM名称'
  - '--zone'
  - '你的VM可用区'
  - '--container-image'
  - 'gcr.io/$PROJECT_ID/$IMAGE:$COMMIT_SHA'

使用该方案需要先手动更新一次VM的初始配置,避免首次启动时拉取latest标签失败:执行gcloud compute instances update-container 你的VM名称 --zone 你的可用区 --container-image gcr.io/$PROJECT_ID/$IMAGE:$COMMIT_SHA 完成首次配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:45:03