我们使用实例组来运行docker容器,并设置实例模板以使用图像作为
us.gcr.io/my-project/my-image:latest
。
当我们对 docker 镜像进行任何更改时,我们都会对其进行标记latest
并运行:
gcloud compute instance-groups managed rolling-action restart my-instance-group --region us-central1
。
对于图像的初始更改,此方法运行良好,实例组 vms 将提取新图像并覆盖以前的图像。但在进行更多更改后,它开始出现错误:
no space left on device
本质上,GCP 不会处理过时的映像,它会存储旧映像副本。但在“滚动更新到容器优化的虚拟机”的情况下,我们能否针对这些用例获得更好的自动化处理?我们真的不想 ssh 进入主机并docker image prune -a
时不时地手动运行。
答案1
您可以在启动脚本 [1] 的开头添加此行。
docker image prune -a
这将删除所有未使用的图像,然后再在启动脚本中拉取新图像。请注意,需要重新启动才能触发启动脚本。
因此,您的硬盘不会被填满,并且您的虚拟机上将运行最新的 docker 映像。