Buildah vs docker build: Construindo imagens no CI
Buildah constrói imagens OCI sem um daemon e suporta fluxos rootless; docker build é o padrão universal via BuildKit.
docker build (apoiado pelo BuildKit) é a forma padrão de construir imagens a partir de um Dockerfile, com cache avançado e amplo suporte de ferramentas. Buildah constrói imagens OCI/Docker sem daemon, suporta builds rootless, pode construir a partir de um Dockerfile e também expõe a construção de imagens passo a passo via script.
| Buildah | docker build | |
|---|---|---|
| Daemon necessário | Não | Sim (ou buildkitd) |
| Rootless | Forte | Suportado |
| Suporte a Dockerfile | Sim (buildah bud) | Sim (nativo) |
| Builds via script | Sim (sem Dockerfile) | Orientado a Dockerfile |
| Suporte do ecossistema de CI | Bom, menos padrão | Universal |
No CI
Buildah é atraente quando você quer builds de imagem sem daemon e rootless - úteis em runners restritos ou onde rodar o dockerd é indesejável. Ele constrói a partir de um Dockerfile (buildah bud) e também pode construir imagens via script sem um. docker build com BuildKit é o padrão universal, com a ferramentaria mais suave e os padrões de cache mais documentados. Para segurança rootless/sem daemon, Buildah (frequentemente com Podman) é o encaixe natural; para menos atrito, docker build.
Escolhendo para pipelines
Quer builds rootless/sem daemon ou construção de imagem via script: Buildah. Quer o construtor mais universalmente suportado e bem documentado: docker build (BuildKit). Empurre o cache de camadas para um registry em qualquer um para acelerar rebuilds repetidos.
O veredito
Builds de imagem rootless/sem daemon ou orientados a script: Buildah. Ferramentaria universal e o padrão mais suave: docker build com BuildKit. Cacheie camadas em um registry em qualquer um para evitar rebuilds.