Buildah est un outil en ligne de commande pour creer des images Open Container Initiative (OCI) compatibles avec Docker, Kubernetes et d’autres systemes de conteneurs. Contrairement a Docker, il fonctionne sans daemon, offrant une alternative legere pour la creation d’images conteneur.
Pourquoi utiliser Buildah ?
- Sans daemon : Fonctionne sans daemon, ameliorant la securite et reduisant la consommation de ressources
- Flexibilite : S’integre facilement dans les pipelines CI/CD existants
- Support multi-arch : Permet de construire des images pour differentes architectures sans configurations separees
Installer Buildah
Sur les systemes Ubuntu, l’installation necessite :
sudo apt-get update
sudo apt-get install -y buildah qemu-user-static
Pour les autres distributions, consultez la documentation officielle d’installation de Buildah.
Construire des images multi-architecture
Etape 1 : Configurer QEMU
Activez la construction cross-architecture en utilisant l’emulation QEMU :
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
Ou avec Podman :
podman run --rm --privileged multiarch/qemu-user-static --reset -p yes
Etape 2 : Preparer votre Dockerfile
Creez un Dockerfile pour votre application. Exemple avec Alpine Linux et des outils de developpement :
FROM alpine:3.20.0
RUN apk add --no-cache \
bash \
curl \
wget \
vim \
nano \
htop \
tcpdump \
nmap \
git \
jq \
netcat-openbsd \
bind-tools \
traceroute
CMD ["/bin/bash"]
Etape 3 : Construire les images pour chaque architecture
Generez des images separees pour amd64 et arm64 :
# Construire l'image pour amd64
buildah bud --arch amd64 -f Dockerfile -t dimjones/toolbox:amd64 .
# Construire l'image pour arm64
buildah bud --arch arm64 -f Dockerfile -t dimjones/toolbox:arm64 .
Etape 4 : Creer un manifest multi-architecture
Combinez les deux images dans un seul manifest :
# Creer un nouveau manifest
buildah manifest create dimjones/toolbox:latest
# Ajouter les images au manifest
buildah manifest add dimjones/toolbox:latest dimjones/toolbox:amd64
buildah manifest add dimjones/toolbox:latest dimjones/toolbox:arm64
Etape 5 : Pousser l’image multi-architecture
Envoyez le manifest multi-architecture vers votre registre Docker :
buildah manifest push --all dimjones/toolbox:latest docker://dimjones/toolbox:latest
Conclusion
Buildah permet la creation efficace d’images conteneur multi-architecture sans la dependance au daemon de Docker. Cette approche simplifie les builds, reduit les dependances systeme et elimine la surcharge de securite liee a l’execution d’un daemon — ce qui en fait une solution ideale pour les environnements cloud et edge computing.