[[ Build Enhancements ]]

Docker

Build Enhancements

Docker version 18.09.8, build 00dd43dd

Общая информация

Build Enhancements или Docker BuildKit улучшенная система сборки контейнеров.

Build Enhancements доступен с версии 18.09

Активируется через переменную окружения DOCKER_BUILDKIT (если не используется по-умолчанию)

DOCKER_BUILDKIT=1 docker build .

Experimental syntaxes

--mount=type=bind

Dockerfile

# syntax = docker/dockerfile:1.0-experimental
FROM ubuntu:18.04

RUN --mount=type=bind,target=/mnt/build \
    ls -lah /mnt/build && \
    pip install -r /mnt/build/requirements.txt

Теперь не нужно делать COPY для файлов, которые не нужны в контейнере

--mount=type=cache

Dockerfile

# syntax = docker/dockerfile:1.0-experimental
FROM ubuntu:18.04
RUN rm -f /etc/apt/apt.conf.d/docker-clean

RUN --mount=type=cache,target=/var/cache/apt --mount=type=cache,target=/var/lib/apt/lists \
    apt-get update
RUN --mount=type=cache,target=/var/cache/apt --mount=type=cache,target=/var/lib/apt/lists \
    apt-get install -y curl

DOCKER_BUILDKIT=1 docker build --pull --force-rm --progress=plain -t ubuntu:test  . 

ubuntu                                        test                 9a9abaec17a2        3 seconds ago        78.5MB

$ docker run --rm -it ubuntu:test bash
$ du -ch /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin /var/lib/apt/lists/*.*
968K    total
$ du -chx /
85M     total

Во время сборки в контейнер монтируются папки типа cache - их содержимое не сохраняется в слой

Содержимое кеш папки сохраняется на протяжении сборки и доступно для разных команд RUN, но только если она примонтирована

Размер получившегося образа 78.5MB (+14.3), размер данных внутри контейнера 85MB (+15), т.о. делаем вывод, что это работает

(возможно пример не очень практичен, но для эксперимента сойдет)






Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
168 +10 = 
 
howto/docker/docker_buildkit.txt · Последние изменения: 2019/12/20 18:03 — lexa
Gentoo Linux Gentoo Linux Driven by DokuWiki