首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker buildkit缓存位置/大小和ID

Docker buildkit缓存位置/大小和ID
EN

Stack Overflow用户
提问于 2020-07-10 12:56:54
回答 2查看 3.9K关注 0票数 19

这里有Docker:https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md,它对RUN有一个额外的选项(以及其他选项):--mount=type=cache

我从文档中找不到的是:

  1. 缓存存储在哪里?
  2. 如何删除/检查该缓存?
  3. 如何决定哪些缓存被存储到哪里?例如,如果我在两个位置有相同的Dockerfile,那么缓存会是相同的吗?缓存的关键是什么?

  1. ,ID选项仍然不明确。如果我在不同的dockerfile中指定相同的ID,它们会引用相同的缓存吗?
EN

回答 2

Stack Overflow用户

发布于 2021-03-31 15:06:46

是的,在船坞20.10.5中有点模糊。可以使用一两次拉请求来更新文档。

  1. 缓存使用与图像层相同的存储驱动程序。元数据存储在/var/lib/docker/buildkit的数据库中。当使用overlay2驱动程序时,层本身位于/var/lib/docker/overlay2/<ID>/diff/中。有关<ID>,请参见下面的内容。根据您的configuration.
  2. docker buildx du --verbose列表生成缓存中的data-root/var/lib/docker可能有所不同。您还可以从docker system df -v --format '{{ .BuildCache | json }}'检查它。缓存类型exec.cachemountRUN --mount type=cache。您可以使用ID找到该层,这与在--mount id中使用的不同。挂载类型是由buildkit实现的,因此docker run --mount不识别它。要摆脱它,无论是docker build --no-cache.
  3. The还是docker buildx prune缓存键都是id=的值。id默认为target值。在同一target.
  4. Yes.上需要不同的缓存时,需要指定id。不管target或Dockerfile如何,它们都是相同的缓存。不同的构建程序有自己的缓存,例如,对于不同的体系结构,缓存是分开的。
票数 10
EN

Stack Overflow用户

发布于 2020-07-10 13:40:19

对于#3,当您不为--mount选项指定一个--mount时,将使用相同的缓存,而不考虑任何其他参数,例如挂载点或Dockerfile内容/路径。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62834806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档