Zaktualizuj 2019
Począwszy od wersji Docker 18.06 istnieje możliwość użycia nowego narzędzia do tworzenia obrazów o nazwie Build Kit .
Jest wstępnie dołączony do Dockera, nie trzeba niczego instalować. Jest wstecznie zgodny ze Dockerfileskładnią, nie trzeba zmieniać rozszerzenia Dockerfile.
Legacy Docker Build vs New Docker BuildKit
Oto przykład budowania obrazu z ogromnym nieużywanym plikiem w katalogu kompilacji:
Starsza kompilacja platformy 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
Nowy zestaw 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
Jedyną zmianą jest DOCKER_BUILDKIT=1zmienna środowiskowa, różnica w czasie jest ogromna.
.dockerignore Plik
Należy pamiętać, że .dockerignoreplik jest nadal aktualny i przydatny. Niektóre Dockerfilepolecenia, takie jak COPY . ., nadal będą uwzględniać .dockerignorezasady. Ale pliki poboczne w katalogu kompilacji (nie Dockerfileprzywoływane w ) nie są już kopiowane jako „kontekst kompilacji” przez BuildKit.