如何从`RUN--mount=type=cache`docker构建中重用缓存?
我正在使用新的实验性docker buildkit语法进行多级构建,如下所示: Dockerfile:如何从`RUN--mount=type=cache`docker构建中重用缓存?,docker,dockerfile,docker-buildkit,Docker,Dockerfile,Docker Buildkit,我正在使用新的实验性docker buildkit语法进行多级构建,如下所示: Dockerfile: RUN --mount=type=cache,target=/home/build/.build-cache,gid=1000,uid=1001 ./build 狂欢节: DOCKER\u BUILDKIT=1个DOCKER构建。 在当地很管用。在CI上,我每次都会得到一个新的docker环境,因此没有缓存 我可以将文件导出和导入到env中,但我不知道缓存位于何处。有什么想法吗 还是应该通
RUN --mount=type=cache,target=/home/build/.build-cache,gid=1000,uid=1001 ./build
狂欢节:
DOCKER\u BUILDKIT=1个DOCKER构建。
在当地很管用。在CI上,我每次都会得到一个新的docker环境,因此没有缓存
我可以将文件导出和导入到env中,但我不知道缓存位于何处。有什么想法吗
还是应该通过某个docker命令导出/导入缓存?我已经读过了,但是我不清楚哪个是特定于buildkit的,哪个是特定于docker的,或者两者是否真的适用于装载到Dockerfile RUN命令中的缓存
我在这里添加了一个失败测试的公开要点,证明了我所希望的:
这个后来的版本很管用,但我对它不满意-太多的自举:
似乎没有任何方法可以从常规docker工作文件中提取此特定缓存 但是,您当然可以备份整个
/var/lib/docker
。这不适用于CircleCI的远程docker引擎,因为您没有sudo访问权限,但适用于GitHub操作
有关示例,请参见此处:
您可以使用buildx w/docker,如
docker buildx build…
并从最终映像中的注册表、文件系统或docker内联中导出/导入层缓存。还有更多信息。谢谢,will review-我觉得我肯定遗漏了一些东西。接下来,问题是在多项目构建中使用gradle,层缓存并没有那么有用,因为我几乎必须进行复制代码>,每次发生任何更改时都会清除所有层缓存。有很多方法可以从层缓存中获益,但维护起来却很痛苦。共享gradle用户主目录在一定程度上是最明智的缓存方式。buildkit团队提出了一个问题,因此实现的可能性比正常情况更大,可以控制作为缓存目录装载的主机目录:现在如果使用docker buildx build