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 ...

本文来自投稿,不代表运维实战侠立场,如若转载,请注明出处:https://www.shizhanxia.com/610.html

(0)
上一篇 2022年6月29日 下午3:58
下一篇 2022年6月29日 下午3:58

相关推荐

发表评论

登录后才能评论