告诉 Docker 构建忽略 RUN 命令顺序的更改



假设我们有这个:

RUN go get 'github.com/foo/one'
RUN go get 'github.com/foo/two'
RUN go get 'github.com/foo/three'

我们更改顺序:

RUN go get 'github.com/foo/two'
RUN go get 'github.com/foo/three'
RUN go get 'github.com/foo/one'

缓存将完全失效。有没有办法告诉docker build依赖项的顺序无关紧要。一些语法如下:

PARALLEL START
RUN go get 'github.com/foo/two'
RUN go get 'github.com/foo/three'
RUN go get 'github.com/foo/one'
PARALLEL END

由于构建映像时的图层系统的工作方式,这是不可能的。

映像是通过在现有内容之上添加内容来构建的,因此,如果更改顺序,则会更改结构,从而生成不同的映像。

不是缓存"失效",而是根本没有缓存。从 docker 的角度来看,它们完全是不同的图像。

Docker使用分层架构来制作镜像。假设您的文件包含以下命令:命令 1 命令 2 命令 3

docker 要做的是执行命令 1 并创建一个第 1 层,在该层之上,它将执行其他命令以尊重地添加第 2 层和第 3 层。您需要了解这一点,即使用此模式 docker 会利用缓存过程。如果更改命令顺序,它将从更改顺序的位置重新创建图层。

最新更新