![GCP 中没有空间用于拉取具有相同标签的 docker 镜像](https://linux22.com/image/742358/GCP%20%E4%B8%AD%E6%B2%A1%E6%9C%89%E7%A9%BA%E9%97%B4%E7%94%A8%E4%BA%8E%E6%8B%89%E5%8F%96%E5%85%B7%E6%9C%89%E7%9B%B8%E5%90%8C%E6%A0%87%E7%AD%BE%E7%9A%84%20docker%20%E9%95%9C%E5%83%8F.png)
我们使用实例组来运行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 映像。