Dim-Jones Blog
Retour au blog

Construire des images Docker multi-arch avec Buildah

2 min de lecture

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.

Partager
Dim-Jones

Dim-Jones

Agence d'ingenierie numerique specialisee en DevOps, developpement logiciel et IA.

Visiter dim-jones.com