删除Docker数据而不影响相关缓存?

xlpyo6sf  于 2023-05-16  发布在  Docker
关注(0)|答案(2)|浏览(192)

当使用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数据可以安全删除,因为它只用于构建或测试应用程序。因此,唯一相关的部分是确保缓存仍然存在,以便快速构建。

lo8azlld

lo8azlld1#

1.确定要保留的数据:确定要保留哪些Docker数据,例如映像、卷或容器。您可以使用docker imagesdocker volume lsdocker container ls来列出现有的Docker数据。
1.删除不必要的数据:删除任何不再需要的Docker数据,例如未使用的容器或镜像。您可以使用docker system prune命令删除所有未使用的数据,或使用docker container prunedocker image prunedocker volume prune删除特定类型的数据。
1.导出保存的数据:使用docker savedocker export命令将保留的Docker数据导出到tarball或目录中。例如,要将名为mycontainer的容器导出到名为mycontainer.tar的tarball,可以运行docker save mycontainer > mycontainer.tar
1.删除Docker数据:使用docker system prune -a命令删除所有剩余的Docker数据。这将删除所有映像、容器和卷。
1.导入保存的数据:使用docker loaddocker import命令从tarball或目录导入保留的Docker数据。例如,要导入mycontainer.tar压缩文件,可以运行docker load < mycontainer.tar

ocebsuys

ocebsuys2#

我决定选择第一和第三种方案。因此,它会删除所有内容,但只保留最新的数据,这也会保留相关的缓存(或多或少)。
所以可以简单地做docker system prune -a --filter until=24h

相关问题