[[ Docker BuildKit ]]

Docker

Docker BuildKit

Docker version 18.09.8, build 00dd43dd

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

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

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

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

DOCKER_BUILDKIT=1 docker build .

Experimental syntaxes

--mount=type=bind

--mount=type=bind,source=/path,target=/path

  • target (required) - Mount path.
  • source - Source path in the from. Defaults to the root of the from.
  • from - Build stage or image name for the root of the source. Defaults to the build context.
  • rw,readwrite - Allow writes on the mount. Written data will be discarded.

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), т.о. делаем вывод, что это работает

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






Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
1 -0 =
 
howto/docker/docker_buildkit.txt · Последнее изменение: 2022/08/31 14:53 — 127.0.0.1
Gentoo Linux Gentoo Linux Driven by DokuWiki