Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从`RUN--mount=type=cache`docker构建中重用缓存?_Docker_Dockerfile_Docker Buildkit - Fatal编程技术网

如何从`RUN--mount=type=cache`docker构建中重用缓存?

如何从`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中,但我不知道缓存位于何处。有什么想法吗 还是应该通

我正在使用新的实验性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中,但我不知道缓存位于何处。有什么想法吗

还是应该通过某个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