更新2019
从Docker v18.06开始,可以使用名为Build Kit的新映像构建器。
它与Docker预先捆绑在一起,无需安装任何东西。它与Dockerfile
语法向后兼容,无需更改Dockerfile
。
旧版Docker Build与新Docker BuildKit
这是一个在生成目录中使用大量未使用的文件生成映像的示例:
旧版Docker构建:
$ time docker image build --no-cache .
Sending build context to Docker daemon 4.315GB
[...]
Successfully built c9ec5d33e12e
real 0m51.035s
user 0m7.189s
sys 0m10.712s
新的Docker BuildKit:
$ time DOCKER_BUILDKIT=1 docker image build --no-cache .
[+] Building 0.1s (5/5) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 37B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
[...]
=> => writing image sha256:ba5bca3a525ac97573b2e1d3cb936ad50cf8129eedfa9 0.0s
real 0m0.166s
user 0m0.034s
sys 0m0.026s
唯一的变化是DOCKER_BUILDKIT=1
环境变量,时间差异巨大。
.dockerignore
文件
请注意,该.dockerignore
文件仍然有效。一些Dockerfile
类似的命令COPY . .
仍会考虑.dockerignore
规则。但是Dockerfile
BuildKit不再将构建目录中的辅助文件(未在中引用)复制为“构建上下文”。