hostprofi.ru
Подобрать хостинг
Термин·буква B

Buildah

краткое определение

Buildah — инструмент сборки OCI-совместимых образов контейнеров без запущенного Docker daemon. Позволяет собирать образы из Dockerfile или через shell-скрипты. Входит в стек Red Hat: Podman (запуск) + Buildah (сборка) + Skopeo (перенос).

Buildah — утилита Red Hat для сборки OCI-совместимых образов контейнеров без Docker daemon. Работает в rootless-режиме (без root-прав) и daemon-less (без фонового сервиса). Образы, собранные Buildah, полностью совместимы с Docker и могут быть запущены через Podman, Docker или Kubernetes.

Сборка образа

# Сборка из Dockerfile (как docker build)
buildah build -t my-app:latest .

# Сборка через скрипт (без Dockerfile)
ctr=$(buildah from ubuntu:22.04)
buildah run $ctr -- apt-get update
buildah run $ctr -- apt-get install -y nginx
buildah config --cmd '["/usr/sbin/nginx", "-g", "daemon off;"]' $ctr
buildah commit $ctr my-nginx:latest

Buildah vs Docker build

  • Docker build — требует запущенного Docker daemon (root или Docker group).
  • Buildah — работает без daemon, в rootless-режиме. Можно запускать в CI/CD-контейнерах без привилегий.
  • Buildah — гибче: можно монтировать слои, использовать host-инструменты для изменения образа.

Стек Red Hat: Podman + Buildah + Skopeo

  • Podman — запуск контейнеров (аналог docker run).
  • Buildah — сборка образов (аналог docker build).
  • Skopeo — копирование образов между реестрами без их загрузки.

История

Buildah создан Red Hat в 2017 году как часть Project Atomic. Версия 1.0 вышла в 2018 году. В 2019 году проект перешёл под контроль Containers организации (containers.github.io). В RHEL 8+ Buildah входит как альтернатива Docker для сборки образов. Podman Desktop (2022) включает Buildah для GUI-сборки.

Связь с хостингом

Buildah востребован в CI/CD на VDS и в Kubernetes-кластерах: для сборки образов в пайплайне не нужен привилегированный Docker-in-Docker (DinD). В GitHub Actions и GitLab CI Buildah позволяет собирать образы в unprivileged-контейнерах. RHEL/Rocky/AlmaLinux используют Podman+Buildah по умолчанию вместо Docker.

История Buildah

Buildah разработан Red Hat в 2017 году как инструмент для сборки OCI-образов без привилегированного Docker-демона. Часть проекта containers/buildah. Buildah 1.0 вышел в 2018 году. Полностью совместим с форматом образов OCI (Open Container Initiative). Поддерживает rootless-сборку с версии 1.11 (2019). Входит в стандартный инструментарий Red Hat OpenShift и используется в Podman.

Buildah vs Docker build vs Kaniko

ИнструментДемонRootlessCI/CD
docker buildDocker daemonчастичнода
Buildahнетдада
KanikoнетдаKubernetes-native
imgнетдада

Практическое применение в CI/CD

Buildah идеален для GitHub Actions и GitLab CI: не требует Docker-in-Docker (dind) и привилегированных контейнеров. Пример сборки: buildah bud -f Dockerfile -t myapp:latest .. Push в реестр: buildah push myapp:latest docker://registry.example.com/myapp:latest. На VPS Buildah устанавливается из репозитория RHEL/Fedora или через пакет buildah в Ubuntu 22.04+.

Типичные ошибки

  • Сборка в rootless-режиме требует настройки /etc/subuid и /etc/subgid.
  • Buildah использует containers/storage — другое расположение образов, чем Docker (/var/lib/docker/).
  • Отсутствие buildah rm --all в CI — накопление рабочих контейнеров занимает место.

Другие термины