Raccourcis

Skopeo, qu'est-ce que c'est ?

Copier l'URL

Skopeo est un outil conçu pour la manipulation, l'inspection, la signature et le transfert d'images de conteneurs et de référentiels d'images sur les systèmes Linux®, Windows et macOS. Tout comme Podman et Buildah, Skopeo est un projet Open Source communautaire qui ne nécessite pas de démon de conteneur.

Skopeo permet d'inspecter des images dans un registre distant, sans télécharger l'image tout entière avec toutes ses couches. Il s'agit d'une solution légère et modulaire qui fonctionne avec des images de différents formats, notamment Open Container Initiative (OCI) et Docker.

Une image de conteneur est un fichier contenant du code exécutable qui peut s'exécuter dans un processus isolé. Les images de conteneurs se composent de deux éléments :

Archive tar

Le premier élément est une archive tar (ou plusieurs) du système de fichiers du conteneur. Une archive tar est un ensemble de fichiers, et le répertoire du système de fichiers contient l'ensemble du code et des fichiers de configuration nécessaires à l'exécution d'une application.

Fichier JSON

Le deuxième élément est un ensemble de fichiers JSON qui décrivent l'application, fournissent la configuration requise pour exécuter le conteneur, transmettent des données entre l'application et le serveur, et stockent des métadonnées sur les composants individuels de l'image ainsi que sur la manière de s'y référer.

Un référentiel de conteneurs est un groupe d'images de conteneurs qui fournissent différentes versions d'une application, tandis qu'un registre de conteneurs est un serveur qui donne accès aux images ou permet le chargement de nouvelles images. 

Skopeo (« vue à distance » en grec) est le premier outil de conteneurisation né de la collaboration entre les ingénieurs Red Hat et la communauté Open Source. Skopeo fonctionne avec Podman et Buildah pour la gestion des conteneurs OCI. En résumé, Buildah crée des conteneurs, Podman les exécute et Skopeo les transporte, entre autres, car il s'agit d'un outil polyvalent. Ensemble, ces différents outils forment une solution complète pour les environnements de conteneurs.

Skopeo inspecte les images à l'aide de la commande skopeo inspect. Avant sa sortie, il fallait extraire l'image tout entière pour l'examiner, même pour examiner seulement certaines métadonnées. La commande inspect affiche les propriétés d'une image, y compris ses couches, ses balises d'image et ses étiquettes, ce qui évite d'avoir à l'extraire de son hôte. Il est ainsi possible de collecter des informations sur un référentiel ou une balise sans consommer de capacité. 

Skopeo permet également de supprimer une image d'un référentiel et de synchroniser un référentiel d'images externe avec un registre interne pour réaliser des déploiements hors réseau plus sécurisés (ou « air gap »). Skopeo peut aussi s'authentifier à l'aide d'informations d'identification et de certificats si le référentiel l'exige.  

La commande skopeo sync permet de réaliser des copies entre les registres pour une utilisation en ligne ou entre un registre et des fichiers, et vice-versa, afin de préparer des environnements déconnectés. Contrairement à la commande skopeo copy qui suppose que la copie demandée nécessite une action, la commande skopeo sync resynchronise plus rapidement les référentiels volumineux comportant peu de modifications. L'opération de synchronisation peut être non seulement lancée directement depuis la ligne de commande, mais aussi configurée dans un fichier config, ce qui permet de synchroniser uniquement un sous-ensemble de balises d'un grand référentiel.

Si l'inspection conclut qu'il faut copier une image de conteneur d'un emplacement ou type d'espace de stockage vers un autre, c'est la commande skopeo copy qui doit être utilisée. L'outil permet de copier des images de conteneurs entre les registres tels que docker.io, quay.io ainsi que le registre de conteneurs interne ou d'autres espaces de stockage sur le système local. La copie directe entre registres de Skopeo est rapide et conserve la forme d'origine (ainsi que le résumé du manifeste de l'image) si le registre de destination l'autorise. La copie d'images entre registres ne nécessite pas l'utilisation d'un disque local ni d'espace libre sur un disque local. Skopeo effectue également des déplacements entre les espaces de stockage du moteur de conteneurs et même les répertoires. Il est souvent utilisé dans les systèmes CI/CD pour actualiser les registres de conteneurs et entretenir l'espace de stockage sur les serveurs de conteneurs.

Des outils flexibles

Skopeo fait partie d'une suite modulaire d'outils de conteneurisation aux multiples avantages. Il est plutôt difficile d'apporter des changements significatifs à un outil monolithique sans provoquer d'interruption pour les utilisateurs. De leur côté, les outils plus petits et spécialisés, tels que Skopeo, Podman et Buildah, peuvent évoluer plus rapidement. Dans un ensemble d'outils, chacun remplit une fonction bien précise et il est possible d'y ajouter d'autres composants pour créer de nouvelles fonctions ou tester des idées et des architectures potentiellement incompatibles avec les outils existants. Ces petits modules sont aussi plus faciles à sécuriser.

À l'image de Podman qui tire une partie de ses fonctions de la bibliothèque libpod qui permet le partage du code entre outils, Skopeo s'appuie également sur une bibliothèque. Compatible avec l'interface en ligne de commande Docker, la bibliothèque d'images et de conteneurs Skopeo est partagée avec d'autres outils, notamment Podman, Buildah et CRI-O. 

Sécurité et accessibilité

Voici les principaux avantages de l'association des trois outils Podman, Skopeo et Buildah :

  • Gestion des conteneurs rootless : les utilisateurs peuvent créer, exécuter et gérer des conteneurs sans processus qui nécessitent des privilèges d'administrateur. Ainsi, l'environnement de conteneurs devient plus accessible et les risques sont réduits.
  • Architecture sans démon : les démons nécessitent un accès administrateur (sans vérification de la part d'un administrateur) pour la lecture des fichiers, l'installation des programmes, la modification des applications, etc. Par conséquent, ils représentent une cible idéale pour les pirates qui cherchent à prendre le contrôle des conteneurs et à infiltrer le système hôte. 
  • Intégration native de systemd : l'utilisation de Podman et des outils de conteneurisation associés permet de créer des fichiers d'unité systemd et d'exécuter des conteneurs en tant que services système.

Kubernetes 

Kubernetes est une plateforme Open Source d'orchestration des conteneurs qui automatise de nombreux processus manuels associés au déploiement, à la gestion et à la mise à l'échelle des applications conteneurisées. Si vous exécutez un système CI/CD dans Kubernetes ou si vous utilisez Red Hat OpenShift® pour créer vos images de conteneurs, vous devrez peut-être distribuer ces dernières dans différents registres de conteneurs. Skopeo est un outil très efficace pour cette tâche.

Calcul haute performance

Les utilisateurs qui exécutent un système d'exploitation plus ancien sur leur système hôte pourront bénéficier des dernières fonctions et mises à jour de Skopeo et d'autres outils. En général, dans les environnements de calcul haute performance, les utilisateurs rootless ne sont pas autorisés à installer des paquets sur l'hôte. Avec la démocratisation du recours à Podman pour le calcul haute performance, les utilisateurs pourraient aussi exécuter les conteneurs Skopeo avec Podman pour certaines tâches, puisqu'aucun accès root n'est requis. 

La solution Red Hat Enterprise Linux simplifie le développement des conteneurs en réduisant le nombre de référentiels et en proposant des outils supplémentaires aux développeurs. Les outils de conteneurisation tels que Podman, Buildah et Skopeo sont inclus dans la souscription pour Red Hat Enterprise Linux et forment une base solide pour vos conteneurs et images de conteneurs. En plus de ces outils, nous proposons des images de base à utiliser pour créer vos propres images. 

Vous pouvez créer, exécuter et partager des images de conteneurs avec les outils en ligne de commande de Red Hat Enterprise Linux, les images UBI, le référentiel Red Hat Quay et le référentiel Supplementary, tout en réduisant la complexité du développement des conteneurs.

Pour aller plus loin

ARTICLE

Conteneurs et machines virtuelles

Les conteneurs Linux et les machines virtuelles sont des environnements informatiques en paquets qui associent divers composants et les isolent du reste du système.

ARTICLE

L'orchestration des conteneurs, qu'est-ce que c'est ?

L'orchestration des conteneurs permet d'automatiser le déploiement, la gestion, la mise à l'échelle et la mise en réseau des conteneurs.

ARTICLE

Un conteneur Linux, qu'est-ce que c'est ?

Un conteneur Linux est un ensemble de processus isolés du système. Un conteneur s'exécute à partir d'une image distincte qui fournit tous les fichiers nécessaires à la prise en charge des processus qu'il contient.