Оновлення 2019 року
Починаючи з Docker v18.06, є можливість використовувати новий конструктор зображень під назвою Build Kit .
Це попередньо в комплекті з Docker, не потрібно нічого встановлювати. Це назад сумісний із Dockerfile
синтаксисом, не потрібно змінювати Dockerfile
.
Legacy 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 як "контекст побудови".