vin*_*ine 6 google-cloud-platform google-cloud-build
我使用 Google Cloud Platform 与 Cloud Build 和 cloudbuild.yaml 进行软件部署。目标虚拟机始终具有 Google 容器优化操作系统 (COS)。
我们做的基本事情是用新容器更新正在运行的 docker 容器。
- name: 'gcr.io/cloud-builders/gcloud'
args: ['compute','instances','update-container','my-vm-id','--zone','europe-west3-c','--container-restart-policy=always','--container-image=gcr.io/cloud-02/my-vm-id','--container-mount-host-path=host-path=/var/extdata,mount-path=/var/extdata,mode=rw']
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,旧的 docker 映像仍保留在主机虚拟机上。我可以使用 docker 映像列表将它们列在主机虚拟机上。由于映像位于 /var/lib/docker 中,因此这些文件是有状态的,并且在重新启动后不会消失。
所以,我不明白,如何在部署过程中修剪Host-VM上的docker镜像文件?
我找到了完成这项任务的方法。我正在使用add-metadata将启动脚本添加到虚拟机的元标头中。如果启动脚本已在上一步中克隆到管道中,则可以将其放入存储库中。就我而言,启动脚本可以在 git 文件夹 /build/compute-engine 中找到。/workdir 是云构建工作管道的默认路径。
现在,每次触发构建时都会执行该任务。
云构建.yaml:
- name: 'gcr.io/cloud-builders/gcloud'
args: ['compute','instances','add-metadata','my-vm-id','--zone','europe-west3-c','--metadata-from-file=startup-script=/workspace/build/compute-engine/startup-vm.bash']
Run Code Online (Sandbox Code Playgroud)
启动-vm.bash:
#! /bin/bash
/usr/bin/docker image prune -a -f
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1185 次 |
| 最近记录: |