移除谷歌容器操作系统的旧容器

我在谷歌计算引擎的谷歌容器操作系统中托管一个Docker镜像。要部署我的容器,我这样做:

gcloud compute instances update-container example --container-image "$IMAGE_WITH_TAG"

在我最新的部署中,我得到了这个错误:

failed to register layer: Error processing tar file(exit status 1): write /usr/share/man/man1/journalctl.1.gz: no space left on device

在SSHing进入我的Docker容器后,我运行Docker图像,注意到Docker仍然挂在我的旧图像上。我可以手动删除这些图像,但同样的问题将发生在更多的部署后。

有没有一种方法,我可以自动删除旧的Docker图像,而部署到容器操作系统通过gcloud计算实例更新- Container ?

###当前计算引擎没有自动清理旧的和未使用的图像的功能。在计算引擎上更新容器时所执行的步骤中没有提到它。

到目前为止,一个解决方案是运行下面的命令来清除磁盘。你也可以在你的关机脚本中添加:

docker rm  $(docker ps -q -a) \
docker images -q -f dangling=true | xargs docker rmi \
docker system prune --all

以上命令将执行以下操作:

删除所有停止的docker容器。

删除所有悬空图像。

删除所有未使用的映像和卷。

解释“悬空”和“未使用”图像之间的区别。

这个类似的答案提供了一个使用prune命令和另一个解决方案的示例,以确保在更新容器图像之前清除旧图像。

###你可以尝试使用第三方工具GCR Cleaner来自动删除旧的图片。所有新创建的图片都被标记为“latest”,所以它们不会被工具意外删除。

GCR Cleaner在谷歌云容器注册表或谷歌云工件注册表中删除未标记的图像。这可以帮助降低成本,并保持你的容器图像列表有序。

GCR Cleaner被设计成部署为一个Cloud Run服务,并通过Cloud Scheduler定期调用。这不是官方的谷歌产品。

另一种方法是使用prune命令自动删除所有与容器不相关的资源。这是一种精简的方式来清理未使用的图像、容器容量和网络。

在终端窗口中输入以下内容:

$ docker system prune

可以包括其他标志:

-包含停止的容器和未使用的映像

-f绕过确认对话框

——volumes删除所有未使用的卷

运行docker系统prune -a删除未使用的和悬挂的映像。在当前运行或退出的容器中使用的映像不会受到影响。

你也可以参考脚本来清理谷歌容器注册表图像推送之前的特定日期。

阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码