Les conteneurs ont révolutionné la manière dont nous développons, déployons et
gérons nos applications. Les conteneurs sont omniprésents dans nos
infrastructures, permettant aux développeurs de créer, tester et exécuter des
applications de manière isolée et reproductible. Cependant, à mesure que les
projets grandissent en complexité, la gestion des images de
conteneurs peut devenir une
tâche énergivore. C’est là qu’intervient Crane, un outil puissant qui simplifie
la gestion quotidienne des images
Docker, vous permettant de
maximiser votre efficacité et de gagner du temps précieux.
Installation de Crane
Installation de Crane sur Linux
ASDF-VM est un gestionnaire de versions polyvalent
qui peut être utilisé pour installer Crane sur Linux.
Installation de Crane sur macOS
Si vous utilisez macOS et préférez Homebrew (Brew) pour gérer vos logiciels,
voici comment installer Crane :
Ouvrez un terminal et exécutez la commande suivante pour installer Crane
avec brew :
Vérification de l’Installation de Crane
Une fois l’installation terminée, vérifiez que Crane est correctement installé
en exécutant la commande suivante :
Mise en place du lab
Pour expliquer le fonctionnement de Crane, je vais installer une registry local.
Je construis une image simple avec de Dockerfile sans aucune attention
particulière :
On construit l’image :
S’authentifier à une registry
Pour s’identifier sur une registry distante, il faut utiliser la commande auth
:
La Gestion des Images avec Crane
Crane, en tant qu’outil polyvalent, offre une gamme de commandes pour gérer
les images de manière avancée. Mais attention, la plupart des commandes
s’exécutent directement dans les registries.
Lister les images d’une registry avec catalog
La commande catalog permet de lister toutes les images d’une registry :
Lister les tags avec ls
La commande ls permet de lister tous les tags d’une image :
Obtenir des Informations avec manifest
La commande manifest permet d’obtenir les informations sur une image stockée
dans la registry.
On voit que l’image est composée de plusieurs Layers
Ajout de Metadata avec mutate
La commande mutate permet de modifier les métadonnées d’une image de
conteneur. Elle permet de changer les labels (étiquettes) et les annotations
d’une image qui est déjà poussée dans un registre.
Aplatir une Image avec flatten
La commande flatten permet d’optimiser la taille des images de conteneurs.
Cette commande est conçue pour transformer une image composée de multiples
couches en une image à couche unique.
La commande prend toutes les couches d’une image de conteneur – chaque couche
représentant une modification ou un ajout au système de fichiers – et les
fusionne en une seule couche. Tous les fichiers et configurations présents dans
les différentes couches sont conservés, mais ils sont regroupés en une structure
de fichier unique.
Supposons que vous avez une image monimage:latest avec plusieurs couches que
vous souhaitez aplatir pour simplification :
On vérifie :
Plus qu’un seul layer !
Bien que flatten puisse réduire la taille de l’image, ce n’est pas toujours le
cas. Parfois, la fusion des couches peut entraîner une image de taille similaire
ou légèrement plus grande.
La taille a diminué légèrement.
Validation d’une Image avec validate
La commande validate s’assure que l’image est conforme aux normes attendues,
évitant ainsi des problèmes potentiels lors du déploiement.
Récupération du SHA256 avec digest
La commande digest permet de récupérer le SHA256 d’une image.
Exportation d’une Image avec export
La commande export permet de télécharger une image et de la stocker dans un
fichier tar. Cette commande peut être utile pour réaliser des analyses, des
sauvegardes ou des transferts.
Obtenir Toutes les Infos avec config
La sécurité est une préoccupation majeure dans la gestion des images de
conteneurs. La commande config permet d’obtenir pas mal d’infos au passage :
On voit bien que crane a ajouté le label version à l’image.
Supprimer des Images avec delete
La commande delete permet de supprimer les images obsolètes ou non sécurisées
des registres qui accepte cette opération.
Ici ce n’est pas le cas, car le registre local ne supporte la destruction !
Manipulation des Index
La commande index est utilisée pour manipuler et gérer des index d’images dans
un registre de conteneurs. Un index d’image, parfois appelé manifeste
multi-architecture ou manifeste d’index, est un type de manifeste dans les
systèmes de registre de conteneurs comme Docker. Il permet de référencer
plusieurs images de conteneurs, souvent pour différentes architectures ou
plateformes, sous un seul tag.
Pour créer un index qui regroupe plusieurs images de conteneurs pour
différentes architectures :
Ici, monindex:latest deviendra un index qui référence les images
monimage-amd64:latest et monimage-arm64:latest.
Pour ajouter ou supprimer des images d’un index existant :
Copie entre Différente Registries
La commande copy permet de copier des images entre différentes registries :
On vérifie que l’image a bien été copié
On a bien que la version attendue.
Ajouter un Tag à une Image
La commande tag permet de créer des tags sur une image :
Rebase d’une image
Toujours plus fort. La commande rebase permet de reconstruire une image en
modifiant l’image de base :
On vérifie :
Récupération des Blobs d’une image
On peut utiliser la commande blob pour récupérer un layer en particulier.
On récupère les sha d’une image :
On récupère le deuxième layer :
On l’importe dans notre docker local :
Bien utile pour du debug par exemple.
Intégration dans les Pipelines CI/CD
L’utilisation de Crane dans les pipelines CI/CD assure que la manipulation des
images de conteneurs se fait de manière cohérente et automatisée, en respectant
les bonnes pratiques de DevOps.
Crane peut-être utilisé par exemple dans des étapes de vos pipelines pour
taguer automatiquement les images avec des numéros de version basés sur des tags
Git, copier des images de conteneurs entre différentes registries, …
On peut tout imaginer.
Conclusion
En conclusion, Crane s’avère être un outil extrêmement puissant et flexible pour
la gestion des images de conteneurs dans divers environnements DevOps. Son
intégration dans les processus d’automatisation, notamment les pipelines CI/CD,
permet de rationaliser et de sécuriser la manipulation des images de conteneurs.
Que ce soit pour des tâches simples comme le transfert d’images entre différents
registres ou pour des opérations plus complexes comme l’intégration dans des
scripts d’automatisation, Crane offre une solution efficace et fiable.