# 前言
Dockerfile 可以通过docker build命令构建为一个新的镜像,Dockerfile 中每一条命令都会构建出一个新的镜像层。当你重新build相同的Docker时,Docker会逐条语句check自身的cache镜像层,如果命中相同的,就使用cache而不执行这条语句继续往下逐条check直至build完成。Docker build cache相关知识可以参考docker build 的 cache 机制。
本文主要讲述如何利用cache提高build的效率。
# 正文
1. build Dockerfile 部分使用 cache
目前 docker 利用 cache 的基本原理是在父节点存在 cache 的前提下,当前 dockerfile 的那条语句之前也构建过就可以用 cache。例外就是 ADD 和 COPY 需要计算一个 checksum。 大致意思就是如果你中间有一层不能用 cache 那之后的层次就都不能用了。因此主要功夫在写 dockerfile 上,尽量把不变的内容放在前面,频繁变化的内容放在最后。简单说就是 把 ADD 和 COPY 的内容放最后一句,这样很多情况下只有最后一层变,前面都能用 cache。 比如我们在Dockerfile中使用了RUN go get xxx,我们提交了一下最新代码,然后重新build时,会命中cache,导致build出的image使用的还是之前的代码。
▶ docker build -t="jeorch/ddsaas:1.0.1" ./
Sending build context to Docker daemon 266.2kB
Step 1/8 : FROM golang:alpine
---> 20ff4d6283c0
Step 2/8 : RUN apk add --no-cach

本文探讨了如何在Dockerfile构建过程中有效利用缓存,包括通过调整指令顺序、使用LABEL或MAINTAINER指令以及禁用缓存等方法,以提高镜像构建效率。
最低0.47元/天 解锁文章
917

被折叠的 条评论
为什么被折叠?



