2019年更新
Docker v18.06以降、ビルドキットと呼ばれる新しいイメージビルダーを使用するオプションがあります。
Dockerにあらかじめバンドルされているため、何もインストールする必要はありません。Dockerfile
構文との下位互換性があるため、を変更する必要はありませんDockerfile
。
レガシーDockerビルドと新しい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によって「ビルドコンテキスト」としてコピーされなくなりました。