Concepts relatifs aux conteneurs

Ce document présente les concepts clés liés aux images de conteneurs, y compris les registres, les dépôts et les artefacts. Il inclut également des informations de base sur la façon dont ces concepts s'appliquent à Artifact Registry et à Container Registry.

Les exemples Artifact Registry de cette page font principalement référence aux dépôts au format Docker et gcr.io. Pour en savoir plus, consultez la section Formats compatibles et la présentation des dépôts.

Registres

Un registre stocke et distribue des images de conteneurs et des artefacts organisés par nom dans des dépôts. Un registre peut contenir un ou plusieurs dépôts , et peut être public ou privé.

Les services de registre tels que Docker Hub et Artifact Registry offrent des options permettant de créer des dépôts publics ou privés. Lorsque vous extrayez des images publiques, il est important de comprendre les problèmes de sécurité potentiels. Pour en savoir plus sur la surveillance des failles et la réduction de votre empreinte de dépendance, consultez la section Gestion des dépendances.

Les registres sont organisés en dépôts qui stockent des images de conteneurs individuelles. Artifact Registry vous permet de créer plusieurs dépôts dans un seul projet et d'associer un emplacement régional ou multirégional spécifique à chaque dépôt. Les dépôts associés peuvent être regroupés par libellés.

Dépôts Artifact Registry et gestion des images

Dans les dépôts au format Docker d'Artifact Registry, vous pouvez stocker plusieurs images de conteneurs portant des noms différents dans le même dépôt. Chaque version d'une image est identifiée par son condensé d'image et peut être associée à un tag. Les tags peuvent être modifiables ou immuables. Pour en savoir plus sur les versions et les tags des images de conteneurs, consultez la section Versions des images de conteneurs.

Artifact Registry fait généralement référence à des parties du chemin d'accès à une image pour identifier le projet, l'emplacement régional ou multirégional, et le nom de l'image, ainsi que le tag ou le condensé du fichier manifeste pour identifier la version correcte.

Exemple :

docker push us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1

  • us-west1 correspond à l'emplacement du dépôt.
  • docker.pkg.dev est le nom d'hôte des dépôts au format Docker.
  • PROJECT est l'espace de noms créé par votre Google Cloud ID de projet.
  • quickstart-docker-repo est l'espace de noms de votre projet dans lequel vous stockez des images. Dans Artifact Registry, cette partie du chemin d'accès est appelée dépôt.
  • quickstart-image est le nom de toutes les versions de quickstart-image et est souvent appelé l'image.
  • tag1 est le tag qui spécifie la version de l'image.

Images

Les artefacts et les images peuvent être stockés dans Artifact Registry. Un artefact peut être n'importe quoi : un fichier texte, une image Docker ou un chart Helm, tandis qu'une image fait généralement référence à une image de conteneur. Les images de conteneur sont des packages logiciels qui contiennent tous les éléments nécessaires pour s'exécuter dans n'importe quel environnement. Pour en savoir plus, consultez la section Que sont les conteneurs ?

Les images sont transférées ou importées dans des dépôts, et extraites ou téléchargées à partir de dépôts. Pour spécifier l'image et la version correctes, vous devez spécifier le registre et l'artefact uniques.

Pour en savoir plus sur les noms de dépôts et d'images dans Artifact Registry, consultez la section Noms des dépôts et des images.

de l'image

Les images de conteneurs stockées dans des dépôts sont construites de manière incrémentielle à l'aide de couches. Différentes images peuvent utiliser certaines des mêmes couches. Les couches sont définies de différentes manières en fonction du type d'image. Par exemple, chaque instruction d'un Dockerfile correspond à une couche de l'image Docker. Dans un registre, les images avec des couches communes partagent ces couches, ce qui augmente l'efficacité du stockage. Pour des raisons de sécurité, les couches ne sont pas partagées entre différents registres.

Lorsque vous supprimez une image de conteneur, les couches ne sont pas supprimées immédiatement. Les couches qui ne sont référencées par aucune image dans le registre sont supprimées quotidiennement.

Tags

Les utilisateurs ajoutent des tags lorsqu'ils transfèrent ou extraient une image dans un dépôt pour spécifier la version d'une image. Une image peut avoir un ou plusieurs tags, ou aucun. Si vous utilisez des tags modifiables et que vous transférez une image deux fois avec le même tag, celui-ci est supprimé de la première image et déplacé vers la seconde, laissant la première image sans tag. L'image sans tag reste accessible à l'aide de ses condensés de fichier manifeste.

Si vous utilisez des tags immuables, les actions suivantes ne sont pas autorisées :

  • Supprimer une image taguée. La suppression des images sans tag est toujours autorisée.
  • Supprimer un tag d'une image.
  • Transférer une image avec un tag déjà utilisé par une autre version de l'image dans le dépôt.

Le tag latest est un tag spécial ajouté lorsque des images sont transférées sans tag.

Exemple :

docker push us-west1-docker.pkg.dev/my-project/my-repo/hello-app

transfère l'image vers hello-app:latest.

docker pull us-west1-docker.pkg.dev/my-project/my-repo/hello-app

extrait l'image hello-app:latest.

Il est important de noter que lorsqu'une image est transférée vers un dépôt avec un tag autre que latest, le tag latest n'est pas ajouté. Par conséquent, il est possible que l'image latest soit en retard par rapport aux modifications les plus récentes. Nous vous recommandons d'utiliser des tags autres que latest pour les versions.

Fichiers manifestes

Les fichiers manifestes d'image identifient et spécifient de manière unique les couches de chaque image. Les fichiers manifestes sont identifiés par des hachages SHA-256 uniques appelés condensés de fichier manifeste. Les condensés de fichier manifeste sont plus fiables et plus sécurisés que les tags, car dans les dépôts avec des tags modifiables, plusieurs versions de la même image peuvent être transférées vers le même tag, laissant certaines images sans tag, tandis que chaque image est spécifiée de manière unique par son condensé de fichier manifeste.

Si vous utilisez des outils pour scanner ou analyser des images, les résultats de ces outils ne sont valides que pour l'image scannée. Pour garantir que vous déployez l'image scannée, vous ne pouvez pas compter sur le tag, car l'image référencée par le tag peut changer.

Pour en savoir plus sur les tags et les fichiers manifestes spécifiques à Artifact Registry, lisez Gérer les images et Utiliser des images de conteneurs.

Préchauffage des images

Pour les applications sensibles à la latence qui utilisent le streaming d'images, l'attente de l'extraction d'une image pour la première fois sur un nouveau nœud ou une nouvelle instance, souvent appelée "démarrage à froid", peut entraîner des retards indésirables. Le préchauffage vous permet de lancer explicitement le téléchargement d'images dans le cache Streaming d'images avant qu'elles ne soient demandées. Ce processus permet de s'assurer que votre image est disponible pour une livraison rapide lorsque votre cluster GKE la demande.

Pour préchauffer des images, utilisez l'API Artifact Registry. Pour obtenir des instructions, consultez la section Réduire la latence avec le préchauffage des images.

Étape suivante