Concepts relatifs aux conteneurs

Ce document présente les concepts clés liés aux conteneurs, y compris les registres, les dépôts et les artefacts. Certaines informations de base sur l'application de ces concepts à Artifact Registry et Container Registry sont également incluses.

Registres

Un registre stocke et distribue des images de conteneur 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 pour créer des dépôts publics ou privés. Lorsque vous extrayez des images publiques, il est important de comprendre les éventuels problèmes de sécurité. Consultez la page sur la gestion des dépendances pour en savoir plus sur la surveillance des failles et sur la réduction de l'empreinte 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 une région ou un emplacement multirégional spécifique à chaque dépôt. Les dépôts associés peuvent être regroupés par libellés.

Dépôts

Les images et les artefacts qui portent le même nom, mais qui sont associés à des tags différents sont organisés en dépôts. Si aucun tag n'est spécifié lors du transfert d'une image vers un dépôt, l'image est taguée avec le tag latest. Si une autre image est transmise sans spécifier de tag, le tag latest est déplacé de l'image d'origine vers l'image la plus récente, la première image étant laissée sans tag. Nous vous recommandons d'attribuer aux versions un tag autre que latest.

Le terme dépôt n'est pas toujours utilisé de manière cohérente. Dans Artifact Registry, il est plus utile d'utiliser des parties du chemin d'accès à l'image pour identifier le projet, la région ou l'emplacement multirégional, le nom de l'image ainsi que le tag ou le condensé du fichier manifeste afin d'identifier la version correcte.

Exemple :

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

  • us-central1 est l'emplacement du dépôt.
  • docker.pkg.dev est le nom d'hôte des dépôts Docker.
  • PROJECT est l'espace de noms créé par l'ID de votre projet Google Cloud.
  • quickstart-docker-repo est l'espace de noms sous votre projet dans lequel vous stockez des images. Dans Artifact Registry, cette partie du chemin est appelée dépôt.
  • quickstart-image est le dépôt de toutes les versions de quickstart-image. Il est souvent appelé 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. Il peut s'agir d'un fichier texte, d'une image Docker ou d'un graphique Helm, tandis qu'une image fait généralement référence à une image de conteneur. Les images de conteneurs sont des packages logiciels qui contiennent tous les éléments nécessaires pour s'exécuter dans n'importe quel environnement. Pour plus d'informations, consultez la section Qu'est-ce que sont les conteneurs ?

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

Exemple :

docker pull us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0

  • us-docker.pkg.dev correspond au registre, y compris l'emplacement multirégional us.
  • /google-samples/containers/gke/ correspond à l'espace de noms et aux sous-espaces de noms. Dans Artifact Registry, google-samples correspond au projet Google Cloud et containers est appelé dépôt Artifact Registry.
  • hello-app est le nom de l'artefact.
  • :1.0 est la balise spécifiant la version de l'artefact à extraire.

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 certains des mêmes calques. 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 ayant 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.

Tags

Les utilisateurs ajoutent des tags lors du transfert ou de l'extraction d'une image vers un dépôt pour spécifier la version d'une image. Une image peut comporter un ou plusieurs tags, ou n'en comporter aucun. Si vous envoyez une image deux fois avec le même tag, le tag est supprimé de la première image et déplacé vers la seconde, la première image ne contenant pas de tag. L'image sans balise reste accessible via les condensés du fichier manifeste.

La balise latest est une balise spéciale ajoutée lorsque les images sont transmises sans balise.

Exemple :

docker push us-docker.pkg.dev/google-samples/containers/gke/hello-app

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

docker pull us-docker.pkg.dev/google-samples/containers/gke/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é. Il est donc possible que l'image latest soit en retard sur les modifications les plus récentes. Nous vous recommandons d'utiliser des tags autres que latest pour les versions. Pour en savoir plus sur l'ajout de tags aux images, découvrez comment ajouter des tags appropriés à vos images.

Fichiers manifestes

Ils 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 fichiers manifestes". Les condensés des fichiers manifestes sont plus fiables et sécurisés que les tags, car plusieurs versions de la même image peuvent être transmises au même tag, laissant certaines images sans tag, tandis que chaque image est spécifiée de manière unique par son condensé du fichier manifeste.

Si vous utilisez des outils pour analyser ou analyser des images, leurs résultats ne sont valables que pour l'image analysée. Pour garantir le déploiement de l'image analysée, vous ne pouvez pas vous appuyer sur le tag, car l'image référencée par ce tag est susceptible de changer.

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

Étapes suivantes