当使用docker buildx bake --load some-target
构建映像时,它会保存构建缓存,稍后可以重用,使下一次重新构建更快。
尽管这可能会占用太多的空间,因为如果不加以控制,缓存/映像可能会增长。
所以我想知道,我应该使用哪些命令来删除不相关的东西并保留相关的缓存,以便构建仍然快速。
我看到了几个选择:
1.如果我使用docker system prune -a
。它将删除大部分内容,包括缓存,然后从头开始构建。
1.如果我使用docker system prune
,它将删除悬挂图像,以及悬挂缓存(没有找到任何关于什么是悬挂构建缓存的文档?))而且看起来即使删除了一些缓存,我的构建时间也不会受到它的影响,它仍然使用相关的缓存。
1.也可以使用命令直接用docker buildx prune --filter until=24h
清除缓存。这一个看起来像它删除相同的“悬空缓存”,但只有在其旧的然后在指定的过滤器。
有什么推荐的方法可以防止Docker失控,但仍然提供缓存?
上下文:我有自托管的runner,其中大多数docker数据可以安全删除,因为它只用于构建或测试应用程序。因此,唯一相关的部分是确保缓存仍然存在,以便快速构建。
2条答案
按热度按时间lo8azlld1#
1.确定要保留的数据:确定要保留哪些Docker数据,例如映像、卷或容器。您可以使用
docker images
、docker volume ls
和docker container ls
来列出现有的Docker数据。1.删除不必要的数据:删除任何不再需要的Docker数据,例如未使用的容器或镜像。您可以使用
docker system prune
命令删除所有未使用的数据,或使用docker container prune
、docker image prune
和docker volume prune
删除特定类型的数据。1.导出保存的数据:使用
docker save
或docker export
命令将保留的Docker数据导出到tarball或目录中。例如,要将名为mycontainer
的容器导出到名为mycontainer.tar
的tarball,可以运行docker save mycontainer > mycontainer.tar
。1.删除Docker数据:使用
docker system prune -a
命令删除所有剩余的Docker数据。这将删除所有映像、容器和卷。1.导入保存的数据:使用
docker load
或docker import
命令从tarball或目录导入保留的Docker数据。例如,要导入mycontainer.tar
压缩文件,可以运行docker load < mycontainer.tar
。ocebsuys2#
我决定选择第一和第三种方案。因此,它会删除所有内容,但只保留最新的数据,这也会保留相关的缓存(或多或少)。
所以可以简单地做
docker system prune -a --filter until=24h