В настоящее время 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
.