【问题标题】:Docker local vs. remote cache (--cache-from)Docker 本地与远程缓存(--cache-from)
【发布时间】:2020-05-05 20:08:50
【问题描述】:

我正在尝试优化我的 docker 注册表中的存储,并在使用远程缓存时遇到问题。

我的 docker 文件如下所示:

FROM java:11-debian

LABEL maintainer="Me"
ENV LANG en_US.utf8

RUN addgroup --system --gid 51170 myusername

...

如果我在本地构建多次使用缓存。

对于 Jenkins 管道,我总是用 latest 标记我的最后一个构建,并在构建当前消息之前提取上一个最新的:

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有什么区别?

【问题讨论】:

    标签: docker jenkins caching


    【解决方案1】:

    来自https://docs.docker.com/engine/reference/commandline/build/#specifying-external-cache-sources

    要将图像用作缓存源,缓存元数据需要在创建时写入图像。这可以通过在构建映像时设置--build-arg BUILDKIT_INLINE_CACHE=1 来完成。之后,构建好的镜像可以作为后续构建的缓存源。

    此外,要使用 Docker BuildKit,您的环境中必须有 DOCKER_BUILDKIT=1。最简单的方法是

    DOCKER_BUILDKIT=1 docker build ...
    

    【讨论】:

      猜你喜欢
      • 2019-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      • 2017-05-02
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      相关资源
      最近更新 更多