Docker本地缓存与远程缓存(--cache-from)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker本地缓存与远程缓存(--cache-from)相关的知识,希望对你有一定的参考价值。
我试图优化我的docker注册表的存储,但使用远程缓存时遇到了问题。
我的docker文件看起来如下。
FROM java:11-debian
LABEL maintainer="Me"
ENV LANG en_US.utf8
RUN addgroup --system --gid 51170 myusername
...
如果我在本地构建多次,缓存就会被使用。
对于Jenkins管道,我总是用最新的标记我的最后一次构建,并在当前消息的构建前拉出之前的最新版本。
docker pull artifactory/image:latest
docker build -t artifactory/image --cache-from artifactory/image:latest .
docker tag artifactory/image artifactory/image:latest
docker push artifactory/image:latest
日志输出如下。
...
---> f6363f58bc32
Step 2/18 : LABEL maintainer="Me"
---> Using cache
---> 54efd5e63c04
Step 3/18 : ENV LANG en_US.utf8
---> Using cache
---> 6865c5539193
Step 4/18 : RUN addgroup --system --gid 51170 myusername
Removing intermediate container f8d05d2e5f16
---> af5202782abc
...
为什么在远程缓存的情况下,RUN没有被缓存?本地缓存和使用--cache-from有什么不同?
答案
从 https:/docs.docker.comenginereferencecommandlinebuild#specifying-external-cache-sources。
要使用图像作为缓存源,缓存元数据需要在创建时写入图像。这可以通过设置
--build-arg BUILDKIT_INLINE_CACHE=1
构建映像时使用。之后,构建的镜像可以作为后续构建的缓存源。
此外,要使用Docker BuildKit,你必须拥有 DOCKER_BUILDKIT=1
在您的环境中。最简单的方法是
DOCKER_BUILDKIT=1 docker build ...
以上是关于Docker本地缓存与远程缓存(--cache-from)的主要内容,如果未能解决你的问题,请参考以下文章