Maîtriser Buildah
Mise à jour :
Buildah est un outil Open Source en ligne de commande qui permet de créer des images de conteneurs sans avoir besoin d’un démon docker en cours d’exécution. Buildah s’intègre facilement dans des pipelines CI/CD, vous permettant de créer et gérer des images de conteneurs de manière efficace.
Buildah permet de créer des images de conteneurs avec ou sans fichier Dockerfile et à partir d’une image ou from scracth.
Installation de Buildah
Buildah n’est disponible que sur un certain nombre de distributions Linux
,
mais pas sur les plates-formes Windows
ou Mac
.
Voici les étapes pour installer Buildah sur Ubuntu :
Vérification de l’installation de Buildah
Une fois l’installation terminée, vous pouvez vérifier si Buildah a été installé avec succès en exécutant la commande suivante :
Vous devriez voir la version de Buildah s’afficher, ce qui indique que l’installation a réussi.
Configuration de Buildah
La variable d’environnement CONTAINER_ROOT
définit le chemin où seront
stockées les images et les données temporaires. Assurez-vous que cette variable
soit correctement configurée pour éviter les problèmes liés au stockage.
Configurer Buildah en mot rootless
Buildah permet de créer des images de conteneurs en tant qu’utilisateur non privilégié, ce qui renforce la sécurité. Pour ce faire, vous devrez configurer les autorisations appropriées. Assurez-vous que votre utilisateur possède les droits nécessaires pour exécuter Buildah. Plus d’infos ici ↗
Construire des images avec Buildah
Dans cette section, vous apprendrez comment créer une image personnalisée à
partir de zéro en utilisant Buildah, ainsi qu’à partir d’un classique
fichier Dockerfile
.
Construction d’une image sans Dockerfile
Attention : Pour ceux qui connaissent docker, vous allez être surpris par ce premier mode de fonctionnement.
La première étape pour construire une image de conteneur est de partir d’une
image de base avec la commande from
:
Cela crée un conteneur Buildah à partir de l’image Alpine Linux. Vous pouvez ensuite personnaliser cet environnement.
Pour obtenir des informations sur le conteneur :
Lancer des commandes sur un conteneur
Une fois que vous avez un conteneur Buildah, vous pouvez lancer des
commandes à l’intérieur du conteneur pour personnaliser l’environnement avec la
commande run
:
Le deuxième argument est l’ID du conteneur Buildah que vous avez créé précédemment.
Créer une image à partir d’un conteneur
Une fois que vous avez personnalisé votre conteneur Buildah comme vous le
souhaitez, vous pouvez le “commit” pour créer une nouvelle image. Utilisez la
commande buildah commit
pour créer une image à partir de votre conteneur
personnalisé :
Pousser une image vers le démon Docker
Si vous souhaitez pousser cette image vers le démon Docker
il faut utiliser la
commande push
:
Petite vérification :
Il existe toute une série de transport autre que docker-daemon:tag
:
dir
containers-storage
docker
docker-archive
oci
oci-archive
ostree
Regardons docker
qui permet de pousser une image vers une registry.
Pousser une image vers une registry de conteneur
Si vous souhaitez pousser cette image vers un registre de conteneurs. Assurez-vous d’être authentifié sur le registre au préalable. Voici comment pousser votre image vers Docker Hub, par exemple :
Cela pousse l’image vers votre compte Docker Hub. Assurez-vous de remplacer
<mon_utilisateur>
par votre nom d’utilisateur Docker Hub.
Arrêter un conteneur
Il suffit d’utiliser la commande rm
suivi de l’ID du container :
Construire des images avec un Dockerfile
Rassurez-vous, on peut aussi construire des images avec un classique
Dockerfile
. Je vais reprendre le même que celui utilisé avec
BuildKit
:
On peut lancer la construction de l’image avec la commande build
:
On vérifie que l’image est bien produite :
On la pousse dans Docker :
Un petit contrôle sous Docker :
Rassurant, on obtient la même taille d’image. On vérifie qu’elle fonctionne ? :
Intégration dans un pipeline CI/CD
Intégrer le processus de construction d’images de conteneurs avec Buildah dans un pipeline CI/CD est le même que celui d’un autre outil.
Par contre, grâce au mode commande de construction d’image, on peut utiliser un
script shell plutôt qu’un
Dockerfile
.
Un exemple :
Il suffira d’utiliser une image contenant buildah pour l’exécuter par exemple sur Gitlab-CI.
Les avantages de Buildah
Lorsque vous envisagez de choisir un outil pour la construction d’images de conteneurs dans un environnement DevOps, vous vous demandez peut-être pourquoi opter pour Buildah par rapport à Docker. Bien que Docker soit largement utilisé et populaire, Buildah offre plusieurs avantages clés pour les équipes DevOps :
Léger et autonome : Buildah ne nécessite pas un démon Docker en cours d’exécution, ce qui réduit la surcharge système et simplifie l’automatisation. Sécurité renforcée : Vous pouvez exécuter Buildah en tant qu’utilisateur non privilégié, ce qui améliore la sécurité en évitant les vulnérabilités potentielles.
Conclusion
Buildah est donc un outil qui simplifie la construction d’images sans avoir
à utiliser le démon Docker et avec un utilisateur sans droits root. Ce billet ne
fait que survoler les possibilités offertes par Buildah. Je n’ai par exemple
pas évoqué l’utilisation de l’instruction
ON_BUILD
↗