В настоящее время werf поддерживает сборку образов с использованием Docker-сервера или без его использования (в экспериментальном режиме). Эта страница содержит сведения, которые применимы только для экспериментального режима без Docker-сервера. На данный момент для этого типа сборки доступен только сборщик образов на основе Dockerfile’ов. Сборщик Stapel будет доступен через некоторое время.

В экспериментальном режиме без Docker-сервера werf использует встроенный Buildah в rootless-режиме.

Системные требования

Требования к хост-системе для запуска werf в Buildah-режиме без Docker/Kubernetes можно найти в инструкциях по установке. А для запуска werf в Kubernetes или в Docker-контейнерах требования следующие:

  • Если ваше ядро Linux версии 5.13+ (в некоторых дистрибутивах 5.11+), то убедитесь, что модуль ядра overlay загружен с lsmod | grep overlay. Если ядро более старое или у вас не получается активировать модуль ядра overlay, то установите fuse-overlayfs, который обычно доступен в репозиториях вашего дистрибутива. В крайнем случае может быть использован драйвер хранилища vfs.
  • Команда sysctl kernel.unprivileged_userns_clone должна вернуть 1. В ином случае выполните:
    echo 'kernel.unprivileged_userns_clone = 1' | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p
    
  • Команда sysctl user.max_user_namespaces должна вернуть по меньшей мере 15000. В ином случае выполните:
    echo 'user.max_user_namespaces = 15000' | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p
    

Включение Buildah

Buildah включается установкой переменной окружения WERF_BUILDAH_MODE в один из вариантов: auto, native-chroot, native-rootless или docker-with-fuse.

  • auto — автоматический выбор режима в зависимости от платформы и окружения;
  • native-chroot работает только в Linux и использует chroot-изоляцию для сборочных контейнеров;
  • native-rootless работает только в Linux и использует rootless-изоляцию для сборочных контейнеров. На этом уровне изоляции werf использует среду выполнения сборочных операций в контейнерах (runc или crun).
  • docker-with-fuse — только этот кроссплатформенный режим доступен для MacOS или Windows.

Большинству пользователей для включения экспериментального режима Buildah достаточно установить WERF_BUILDAH_MODE=auto.

Драйвер хранилища

werf может использовать драйвер хранилища overlay или vfs:

  • overlay позволяет использовать файловую систему OverlayFS. Можно использовать либо встроенную в ядро Linux поддержку OverlayFS (если она доступна), либо реализацию fuse-overlayfs. Это рекомендуемый выбор по умолчанию.
  • vfs обеспечивает доступ к виртуальной файловой системе вместо OverlayFS. Эта файловая система уступает по производительности и требует привилегированного контейнера, поэтому ее не рекомендуется использовать. Однако в некоторых случаях она может пригодиться.

Как правило, достаточно использовать драйвер по умолчанию (overlay). Драйвер хранилища можно задать с помощью переменной окружения WERF_BUILDAH_STORAGE_DRIVER.