【问题标题】:Is Docker build cache automatically purged?Docker 构建缓存会自动清除吗?
【发布时间】:2020-11-25 10:35:09
【问题描述】:

我无法确定 Docker 的本地构建缓存是否被自动清除。

如果它被清除,多久清除一次?这是我们可以配置的吗?是否有年龄限制或总缓存大小限制?

请注意,这个问题不是关于如何在构建镜像时绕过缓存,也不是关于如何手动清除缓存,也不是关于如何利用缓存机制来加速 Docker 构建。这些问题已经被广泛记录。这个问题的目的是了解 Docker 如何在内部管理其构建缓存。如果不手动清除它会永远存在吗?它会自行到期吗?怎么样?

【问题讨论】:

  • 我的 docker build 缓存现在因未知原因消失了。我确实更改了构建上下文(文件夹中的文件),但它不应该使整个缓存无效,因为我的 COPY 语句最后放在 Dockerfile 中。因此,这要么是一个错误,要么是缓存被自动清除了。有足够的磁盘空间。

标签: docker


【解决方案1】:

docker 的构建缓存基于您在本地拥有的images。图像永远不会被自动删除,所以本质上构建缓存永远不会被删除

docker 决定是否使用缓存的方式包括检查上一层和正在运行的命令是否相同

如果您删除了原本用于满足缓存的图像,您可以考虑“清除缓存”(另外docker system prune -f 将删除任何可能也是缓存组件的匿名图像)

【讨论】:

  • 所以有一个无限的缓存,直到它可能用完所有可用的磁盘空间?你有参考吗?这些将使您的答案非常有价值。
  • 正确的是——实际上没有什么可以参考的,因为它就是这样工作的(没有规范)——尽管它很复杂,但你可以阅读源代码。这个答案来自经验:作为用户和我自己对缓存代码的贡献:github.com/moby/moby/pull/35582
猜你喜欢
  • 2015-05-06
  • 1970-01-01
  • 2019-07-11
  • 1970-01-01
  • 2019-07-06
  • 2017-02-02
  • 2011-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多