Docker本地缓存与远程缓存(--cache from)
我试图优化docker注册表中的存储,但在使用远程缓存时遇到了问题 我的docker文件如下所示:Docker本地缓存与远程缓存(--cache from),docker,jenkins,caching,Docker,Jenkins,Caching,我试图优化docker注册表中的存储,但在使用远程缓存时遇到了问题 我的docker文件如下所示: FROM java:11-debian LABEL maintainer="Me" ENV LANG en_US.utf8 RUN addgroup --system --gid 51170 myusername ... ... ---> f6363f58bc32 Step 2/18 : LABEL maintainer="Me" ---> Using cach
FROM java:11-debian
LABEL maintainer="Me"
ENV LANG en_US.utf8
RUN addgroup --system --gid 51170 myusername
...
...
---> 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
...
如果我在本地多次构建缓存,那么缓存将被使用
对于Jenkins pipeline,我总是在生成当前消息之前,用latest标记我的上一次生成,并提取上一次的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
日志输出如下所示:
FROM java:11-debian
LABEL maintainer="Me"
ENV LANG en_US.utf8
RUN addgroup --system --gid 51170 myusername
...
...
---> 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的用法有什么区别?from
要将图像用作缓存源,需要在创建时将缓存元数据写入图像中。这可以通过在构建映像时设置--build arg BUILDKIT\u INLINE\u CACHE=1来实现。之后,生成的映像可以用作后续生成的缓存源
此外,要使用Docker BuildKit,您的环境中必须有Docker\u BuildKit=1
。最简单的方法是
DOCKER_BUILDKIT=1 docker build ...