繁体   English   中英

容器优化 VM - 如何强制从注册表中拉取(而不是使用本地图像:标签)?

[英]Container Optimized VM - How to force pulling from registry (and not using local image:tag)?

我正在使用 Google Cloud Build 构建在多个项目的 Container Optimized OS VM 上运行的容器

典型的cloudbuild.yaml文件如下所示:

steps:
  - name: 'gcr.io/cloud-builders/docker'
    args: [ "build",
    "-t", "gcr.io/${PROJECT_ID}/core-app-${BRANCH_NAME}:latest",
    "."]
  - name: 'gcr.io/cloud-builders/docker'
    args: ["push", "gcr.io/${PROJECT_ID}/core-app-${BRANCH_NAME}:latest"]
  - name: 'gcr.io/cloud-builders/gcloud'
    args: ["beta", "compute", "instances", "update-container", "core-app-${BRANCH_NAME}", "--container-image", "gcr.io/${PROJECT_ID}/core-app-${BRANCH_NAME}:latest", "--zone", "${_ZONE}"]
images:
- "gcr.io/${PROJECT_ID}/core-app-${BRANCH_NAME}:latest"

触发器定义有一些分支条件

本质上,在提交给定分支时,将构建一个带有标签latest的图像并用于运行给定 VM 的容器。

直到几个星期前,它都运行良好。 突然间,在所有项目中,它都停止正常工作。 VM 没有拉latest的,而是继续使用本地的。 我发现的唯一解决方法是使用 SHA 作为标记 ( gcr.io/${PROJECT_ID}/core-app-${BRANCH_NAME}:${SHORT_SHA} ),但这会导致多个图像在 VM 上累积,并在某些情况下累积点,没有足够的空间,部署失败。

那么,当本地磁盘上有同名图像时,如何强制容器优化的 VM 拉取图像:标签?

您可以在拉入新图像之前删除旧图像,方法是使用如下命令

docker image prune -a -f

从一个版本更新到另一个版本时,您的停机时间会更长,但如果这对您来说不是真正的问题,那么这应该可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM