Gérez vos images de conteneurs avec Skopeo
Mise à jour :
Gérer des images conteneurs peut vite devenir un casse-tête, surtout lorsqu’on doit les manipuler entre plusieurs registres sans forcément les télécharger. C’est là que Skopeo entre en jeu ! Contrairement à Docker ou Podman, cet outil ne dépend d’aucun démon et permet de copier, inspecter, supprimer et synchroniser des images directement depuis des registres distants.
Pourquoi utiliser Skopeo ?
Que vous travailliez avec Docker Hub, Quay.io, Harbor ou un registre privé, Skopeo simplifie la gestion des images en évitant les contraintes classiques.
Fonctionnalités de Skopeo
Skopeo est un outil puissant pour gérer les images conteneurs sans nécessiter de démon. Voici ses principales fonctionnalités :
- *Inspection et analyse d’images :
- Afficher les métadonnées d’une image avec
skopeo inspect
. - Vérifier les signatures et la provenance d’une image.
- Lister les tags disponibles d’un dépôt distant.
- Afficher les métadonnées d’une image avec
- Copie d’images entre registres :
- Copier une image entre Docker Hub, Quay.io, Harbor, etc.
- Transférer une image d’un registre privé sans passer par un moteur de conteneur.
- Convertir une image entre les formats OCI et Docker.
- Gestion et suppression d’images à distance :
- Supprimer une image directement sur un registre avec
skopeo delete
. - Authentification et gestion des accès avec
--creds
et--authfile
.
- Supprimer une image directement sur un registre avec
- Comparaison et synchronisation d’images
- Comparer plusieurs versions d’une image avec
skopeo inspect
. - Synchroniser des images entre plusieurs registres (
skopeo sync
).
- Comparer plusieurs versions d’une image avec
Avec ces fonctionnalités, Skopeo devient un outil incontournable pour toute infrastructure DevOps nécessitant une gestion flexible des images conteneurs.
Installation de Skopeo
L’installation de Skopeo varie selon le système d’exploitation. Voici comment l’installer sur Linux, MacOS et Windows.
Installation sur Linux
-
Debian / Ubuntu
Terminal window sudo apt update && sudo apt install -y skopeo -
RHEL / CentOS / Fedora
Terminal window sudo dnf install -y skopeo
Installation sur MacOS
Via Homebrew :
brew install skopeo
Installation sur Windows
Sur Windows, Skopeo peut être utilisé via WSL (Windows Subsystem for Linux) ou en téléchargeant les binaires.
-
Sur WSL : Si vous utilisez Ubuntu sous WSL :
Terminal window sudo apt update && sudo apt install -y skopeo -
Via les binaires (exécutable standalone)
- Télécharger le dernier binaire depuis la page des releases ↗.
- Extraire et ajouter le binaire à votre PATH.
Après l’installation, vérifiez que Skopeo fonctionne avec :
skopeo --versionskopeo version 1.13.3
Vous êtes prêt à manipuler vos images conteneurs sans daemon !
Utilisation de Skopeo
Avec Skopeo, vous pouvez effectuer de nombreuses opérations sur les images de conteneurs sans avoir besoin de Docker ou Podman. sur votre poste
Voici quelques exemples d’utilisation courante de Skopeo :
Explorer et analyser des images conteneurs**
Avec Skopeo, il est possible d’inspecter les métadonnées d’une image conteneur sans la télécharger. C’est particulièrement utile pour vérifier une image avant de l’utiliser.
Inspecter une image
La commande skopeo inspect
permet d’afficher les métadonnées d’une image
hébergée sur un registre distant.
skopeo inspect docker://docker.io/library/nginx:latest
Ce qui affiche :
- Tous les tags de l’image
- Le digest de l’image
- L’architecture et le système d’exploitation
- La date de création
- Les couches de l’image
- Les variables d’environnement, le PATH, etc.
Si l’image est sur un registre nécessitant une authentification :
skopeo inspect --creds user:password docker://my-registry.com/my-image:latest
Lister les tags d’une image
Pour connaître les versions disponibles d’une image :
skopeo list-tags docker://docker.io/library/nginx
Cela retourne une liste des tags disponibles (ex. 1.21
, latest
,
stable
…).
Copier des images entre différents registres
L’une des fonctionnalités les plus puissantes de Skopeo est la possibilité de copier des images conteneurs entre différents registres sans les télécharger localement. Cela permet de déplacer des images entre Docker Hub, Quay.io, Harbor, un registre privé, ou encore un environnement air-gap.
Copier une image d’un registre à un autre
La commande de base pour copier une image est :
skopeo copy docker://quay.io/skopeo/stable:latest docker://registry.example.com/skopeo:latest
Cela télécharge directement l’image de Quay IO et la pousse vers registry.example.com.
Copier une image entre registres en incluant les credentials
Si votre registre nécessite une authentification :
skopeo copy --src-creds user:password --dest-creds user:password \ docker://docker.io/library/nginx:latest docker://my-registry.com/nginx:latest
Convertir une image entre formats OCI et Docker
Par défaut, Docker utilise le format Docker Image Manifest, mais certains outils comme Podman et Kubernetes préfèrent le format OCI.
skopeo copy docker://docker.io/library/nginx:latest oci:nginx-oci:latest
Convertir une image OCI en Docker
skopeo copy oci:nginx-oci:latest docker-archive:nginx.tar
L’image sera stockée localement sous forme de fichier TAR.
Copier une image vers un stockage local
Si vous voulez récupérer une image sans passer par un moteur de conteneur :
skopeo copy docker://docker.io/library/nginx:latest dir:/tmp/nginx
Cela extrait les couches et le manifest dans /tmp/nginx/
.
Copier une image dans un environnement air-gap
Dans des environnements restreints, il peut être nécessaire d’exporter une image depuis un registre public pour l’importer dans un registre déconnecté.
-
Exporter l’image en archive :
Terminal window skopeo copy docker://docker.io/library/nginx:latest docker-archive:/tmp/nginx.tar -
Transférer l’archive vers l’environnement air-gap
-
Importer l’image sur un registre privé :
Terminal window skopeo copy docker-archive:/tmp/nginx.tar docker://private-registry.local/nginx:latest
Avec Skopeo, plus besoin de télécharger des images en local avant de les envoyer sur un autre registre ! Un gain de temps énorme pour les infrastructures DevOps et les environnements CI/CD.
Comparer et synchroniser des images**
Avec Skopeo, il est possible de comparer plusieurs versions d’une image et de synchroniser des images entre registres. Cela est utile pour s’assurer qu’une image est bien identique sur plusieurs environnements ou pour maintenir à jour un miroir privé.
Comparer des images avec skopeo inspect
Si vous souhaitez vérifier si deux images sont identiques, vous pouvez comparer leurs hashs (digest).
skopeo inspect docker://docker.io/library/nginx:latest | grep Digestskopeo inspect docker://my-registry.com/nginx:latest | grep Digest
Si les digests sont identiques, cela signifie que les images sont exactement les mêmes.
Synchroniser des images entre registres (skopeo sync
)
Si vous devez répliquer des images entre plusieurs registres, skopeo sync
est l’outil idéal.
skopeo sync --src docker --dest docker docker.io/library/nginx my-registry.com
Cela télécharge toutes les versions de nginx
et les pousse sur
my-registry.com.
Synchroniser plusieurs images définies dans un fichier
Vous pouvez définir une liste d’images à synchroniser dans un fichier YAML :
Le fichier sync.yml :
registry.example.com: images: busybox: [] redis: - "1.0" - "2.0" - "sha256:0000000000000000000000000000000011111111111111111111111111111111" images-by-tag-regex: nginx: ^1\.13\.[12]-alpine-perl$ images-by-semver: alpine: ">= 3.12.0" credentials: username: john password: this is a secret tls-verify: true cert-dir: /home/john/certsquay.io: tls-verify: false images: coreos/etcd: - latest
Puis exécuter la commande :
skopeo sync --src yaml --dest docker sync.yml my-registry.local.lan/repo/
Créer un miroir local d’un registre public
Si vous travaillez dans un environnement air-gap, vous pouvez répliquer un ensemble d’images en local.
- Synchroniser toutes les images d’un projet Quay.io
skopeo sync --src docker --dest dir quay.io/example/repo /local/path/
Toutes les images seront stockées en local.
- Pousser ces images sur un registre privé
skopeo sync --src dir --dest docker /local/path/ my-registry.com
Suppression et gestion des images à distance
Pour rappel, avec Skopeo, il est possible de gérer les images sur un registre distant sans avoir besoin d’un moteur de conteneur. Cela inclut la suppression d’images.
Si vous avez les permissions nécessaires, vous pouvez supprimer une image directement d’un registre avec :
skopeo delete docker://my-registry.com/nginx:latest
Attention : Cette action est irréversible et supprime définitivement l’image du registre.
Conclusion
Vous l’aurez compris, Skopeo s’impose comme un outil indispensable pour la gestion des images conteneurs, en offrant une alternative légère et flexible aux outils traditionnels comme Docker et Podman.
Grâce à ses fonctionnalités avancées, il permet d’inspecter, copier, synchroniser et même supprimer des images directement sur un registre, sans avoir besoin de les télécharger ou d’avoir un moteur de container installé sur la machine. C’est donc un super outil à ajouter dans des pipelines CI/CD.