Об этом проекте

Buildah — это инструмент командной строки с открытым исходным кодом для создания образов контейнеров Open Container Initiative (OCI). Он является частью экосистемы проекта containers и тесно связан с Podman. Основные возможности, описанные в README: - Создание рабочего контейнера с нуля или из существующего образа в качестве отправной точки. - Создание образа из рабочего контейнера или на основе инструкций в Dockerfile/Containerfile. - Сборка образов в формате OCI или в традиционном формате образов Docker (upstream). - Монтирование и размонтирование корневой файловой системы рабочего контейнера для непосредственного управления. - Использование обновлённого содержимого корневой файловой системы контейнера в качестве слоя файловой системы для создания нового образа. - Удаление рабочего контейнера или образа, а также переименование локального контейнера. Buildah спроектирован для работы без необходимости прав root. Его команды повторяют операции, встречающиеся в Dockerfile, что позволяет собирать образы как с Dockerfile, так и без него. Проект заявляет, что его цель — предоставить низкоуровневый интерфейс в стиле coreutils для сборки образов, а сборка без Dockerfile позволяет интегрировать другие скриптовые языки в процесс сборки. Buildah следует модели fork-exec и не работает как демон; он основан на Go API, который можно встраивать в другие инструменты. В README объясняется взаимосвязь с Podman: Podman специализируется на поддержании и изменении образов OCI (pull, tag) и на создании, запуске и поддержании контейнеров из этих образов. Для сборки образов через Dockerfile Podman использует Go API Buildah и может устанавливаться независимо. Ключевое различие — концепция контейнера: контейнеры Podman предназначены для длительного существования, тогда как контейнеры Buildah существуют для того, чтобы можно было добавить содержимое обратно в образ. В README отмечается, что `buildah run` имитирует команду RUN в Dockerfile, а `podman run` имитирует `docker run`, и что из-за различий в хранилище контейнеры Podman не видны из Buildah и наоборот. В README есть пример на shell, который создаёт контейнер из базового образа, выполняет обновление пакетов и установку lighttpd, задаёт аннотации времени сборки, настраивает команду и открытый порт, а затем фиксирует контейнер под именем образа. Документированные команды CLI включают: add, build, commit, config, containers, copy, from, images, info, inspect, mount, pull, push, rename, rm, rmi, run, tag, umount, unshare и version. В README также есть ссылки на учебные пособия, инструкции по установке, руководство по устранению неполадок, демонстрации, журнал изменений, рекомендации по участию и план разработки. Среди упомянутых будущих целей — больше CI-тестов и, возможно, дополнительные команды CLI.