Artifact Registry est un service universel de gestion de packages compatible avec les conteneurs et d'autres formats. Découvrez comment effectuer une transition depuis Container Registry pour plus de flexibilité et de contrôle sur vos artefacts.

Présentation de Container Registry

Container Registry est un registre privé d'images de conteneurs qui s'exécute sur Google Cloud. Container Registry est compatible avec les formats d'images Docker Image Manifest V2 et OCI.

De nombreuses personnes utilisent Docker Hub comme registre central pour stocker des images Docker publiques. Cependant, pour contrôler l'accès à vos images, vous devez utiliser un registre privé tel que Container Registry.

Des points de terminaison HTTPS vous permettent d'accéder à Container Registry en toute sécurité pour stocker, extraire et gérer des images depuis tout type de système et d'instance de VM, ou à partir de votre propre matériel.

Registres

Les registres dans Container Registry sont nommés selon l'hôte et l'ID du projet. Pour travailler avec des images (par exemple, retrait, envoi, suppression), identifiez l'image en utilisant le format suivant :

HOSTNAME/PROJECT-ID/IMAGE:TAG

ou

HOSTNAME/PROJECT-ID/IMAGE@IMAGE-DIGEST

où :

  • HOSTNAME est l'emplacement où l'image est stockée :

    • gcr.io héberge les images aux États-Unis, mais cet emplacement peut être amené à changer par la suite.
    • us.gcr.io héberge les images aux États-Unis, dans un bucket de stockage distinct de celui utilisé pour les images hébergées par gcr.io.
    • eu.gcr.io héberge les images dans l'Union européenne.
    • asia.gcr.io héberge les images en Asie.

    Ces emplacements multirégionaux hébergent les buckets de stockage Cloud Storage. Lorsque vous transférez une image vers un registre avec un nouveau nom d'hôte, Container Registry crée un bucket de stockage dans l'emplacement multirégional spécifié. Ce bucket forme le stockage sous-jacent du registre. Dans un projet, tous les registres portant le même nom d'hôte partagent un bucket de stockage.

  • PROJECT-ID est l'ID du projet dans Google Cloud Console. Si l'ID du projet contient le signe deux-points (:), consultez la section Projets à l'échelle du domaine ci-dessous.

  • IMAGE correspond au nom de l'image. Ce nom peut être différent du nom local de l'image. Dans Google Cloud Console, les registres du projet sont répertoriés en fonction du nom de l'image. Chaque dépôt peut contenir plusieurs images du même nom. Par exemple, un dépôt peut contenir différentes versions d'une image appelée "my-image".

  • L'ajout des suffixes :TAG ou @IMAGE-DIGEST vous permet de distinguer une version spécifique de l'image (facultatif). Si vous ne spécifiez pas de tag ni de condensé, Container Registry recherche l'image avec le tag par défaut latest. Consultez la section Versions d'images dans un registre ci-dessous.

Pour l'image my-image du registre gcr.io/PROJECT-ID, utilisez ce format pour transférer ou extraire une image :

gcr.io/PROJECT-ID/my-image:tag1

PROJECT-ID est l'ID du projet dans Google Cloud Console.

Organiser des images avec des dépôts

Vous pouvez regrouper des images associées dans un dépôt au sein d'un registre. Lorsque vous taguez, transférez ou extrayez une image, vous spécifiez le nom du dépôt sous le projet dans le chemin d'accès de l'image.

Prenons l'exemple suivant :

us.gcr.io/builds/dev/web-app:beta-2.0
us.gcr.io/builds/stable/web-app:1.0

Il existe deux images nommées web-app dans le projet builds. L'une se trouve dans un dépôt dev et l'autre dans un dépôt stable. Cette structure vous permet de stocker différentes versions d'une image pour les différentes étapes de développement ou différentes équipes.

Si nécessaire, vous pouvez imbriquer des dépôts. Dans cet exemple, deux produits distincts disposent d'un dépôt de niveau supérieur avec des dépôts enfants au niveau inférieur.

us.gcr.io/builds/product1/dev/product1-app:beta-2.0
us.gcr.io/builds/product1/stable/product1:1.0
us.gcr.io/builds/product2/dev/product2:alpha
us.gcr.io/builds/product2/stable/product2:1.0

Les dépôts facilitent l'organisation. Ils agissent comme des dossiers logiques dans le chemin de l'image, mais ne reflètent pas la structure réelle du système de fichiers et ne sont pas compatibles avec un contrôle d'accès plus précis.

Versions d'images dans un registre

Un registre peut contenir plusieurs images distinctes, ainsi que différentes versions de ces images. Pour identifier une version spécifique de l'image dans un registre, vous pouvez spécifier le tag ou le condensé de l'image.

  • Les tags servent de libellé. Vous pouvez appliquer plusieurs tags à une même image. Par exemple, une image peut comporter le tag v1.5 indiquant un numéro de version et le tag release-candidate indiquant qu'elle est prête pour le test final.
  • Les condensés sont générés automatiquement et sont uniques pour chaque version d'une image. Ils prennent la forme @IMAGE-DIGEST, où IMAGE-DIGEST est la valeur de hachage sha256 du contenu de l'image.

Pour identifier une version spécifique de l'image my-image, procédez comme suit :

  • Ajoutez le tag de l'image :

    gcr.io/PROJECT-ID/my-image:tag1
    
  • Ou ajoutez le condensé de l'image :

    gcr.io/PROJECT-ID/my-image@sha256:4d11e24ba8a615cc85a535daa17b47d3c0219f7eeb2b8208896704ad7f88ae2d
    

PROJECT-ID est l'ID du projet dans Google Cloud Console. Si l'ID du projet contient le signe deux-points (:), consultez la section Projets à l'échelle du domaine ci-dessous.

Dans Cloud Console, sur l'écran Images, la colonne Tags répertorie les tags de l'image. Cliquez sur la version de l'image pour voir les métadonnées, y compris le Condensé de l'image.

Consultez la section Ajouter des tags à des images pour découvrir comment modifier les tags.

Projets à l'échelle du domaine

Si votre projet est à l'échelle de votre domaine, l'ID de projet comprend le nom du domaine suivi par le signe deux-points (:). En raison de la façon dont Docker traite les deux points, vous devez remplacer ce caractère par une barre oblique lorsque vous spécifiez un condensé d'image dans Container Registry. Identifiez les images dans ces types de projets en utilisant le format suivant :

HOSTNAME/[DOMAIN]/[PROJECT]/IMAGE

Par exemple, le projet portant l'ID example.com:my-project pourrait avoir l'image suivante :

gcr.io/example.com/my-project/image-name

Noms de registre sous forme d'URL

Une URL de registre dans Cloud Console a le format suivant : https://HOSTNAME/PROJECT-ID/IMAGE. N'importe quel utilisateur authentifié et autorisé à accéder au registre peut consulter ces liens. Consultez la section ci-dessus pour savoir comment construire le nom du registre.

Par exemple, les URL suivantes renvoient à des registres publics de Cloud Console :

Formats d'images de conteneurs

Container Registry est compatible avec les formats d'images Docker Image Manifest V2 et OCI.

Pour en savoir plus, consultez la page Formats d'images de conteneurs.

Contrôle des accès

Container Registry stocke ses tags et ses fichiers de couches pour les images de conteneurs dans un bucket Cloud Storage situé dans le même projet que le registre. L'accès au bucket est configuré à l'aide des paramètres de gestion de l'authentification et des accès (IAM) de Cloud Storage.

Par défaut, les propriétaires et les éditeurs du projet disposent d'autorisations push et pull pour le bucket Container Registry de ce projet. Les lecteurs du projet disposent uniquement de l'autorisation pull.

Pour en savoir plus, consultez la page Configurer le contrôle des accès.

Consultez les avis d'obsolescence de Container Registry pour en savoir plus sur le projet de migration des métadonnées d'image hors de Cloud Storage, vers une base de données backend hautes performances.

Authentification

Avant de pouvoir transférer ou extraire des images, vous devez configurer l'authentification. Vous pouvez configurer Docker afin qu'il se serve de l'outil de ligne de commande gcloud pour authentifier les requêtes envoyées à Container Registry. Container Registry est également compatible avec les méthodes d'authentification avancées utilisant des jetons d'accès ou des fichiers de clés JSON.

Assistant d'identification Docker

Docker doit avoir accès à Container Registry pour pouvoir transférer et récupérer des images. Vous pouvez utiliser l'outil de ligne de commande de l'assistant d'identification Docker pour configurer les identifiants Container Registry à utiliser avec Docker.

L'assistant d'identification récupère vos identifiants Container Registry, soit automatiquement, soit à partir d'un emplacement spécifié à l'aide de son option --token-source, puis les écrit dans le fichier de configuration de Docker. Ainsi, vous pouvez utiliser l'outil de ligne de commande Docker docker pour interagir directement avec Container Registry.

Pour en savoir plus, consultez la section Authentification avancée.

Compte de service Container Registry

Lorsque vous activez l'API Container Registry, Container Registry ajoute un compte de service à votre projet. Celui-ci porte le nom suivant :

service-[PROJECT_NUMBER]@containerregistry.iam.gserviceaccount.com

Ce compte de service est spécifiquement conçu pour que Container Registry remplisse ses fonctions de service sur votre projet. Ce compte appartient à Google, mais il est spécifique à votre projet. Il est répertorié dans les sections "Comptes de service" et "IAM" de Cloud Console.

Si vous supprimez ce compte de service ou si vous modifiez ses autorisations, certaines fonctionnalités de Container Registry ne fonctionneront plus correctement. Vous ne devez pas modifier les rôles, ni supprimer le compte.

Cache d'extraction

Le registre mirror.gcr.io met en cache des images publiques fréquemment demandées sur les dépôts Docker Hub officiels.

L'utilisation d'images mises en cache peut accélérer les extractions à partir de Docker Hub. Votre client recherche toujours une copie mise en cache d'une image Docker Hub avant d'essayer de l'extraire directement de Docker Hub.

Pour en savoir plus, consultez la page Extraire des images Docker Hub mises en cache.

Notifications

Vous pouvez utiliser Pub/Sub pour obtenir des notifications sur les modifications apportées à vos images de conteneurs.

Pour en savoir plus, consultez la page Configurer les notifications Pub/Sub.

Utiliser Container Registry avec Google Cloud

Les instances Compute Engine et les clusters Google Kubernetes Engine peuvent transférer et extraire des images Container Registry selon les champs d'application Cloud Storage définis sur les instances. Consultez la page Utiliser Container Registry avec Google Cloud.

Les images stockées dans Container Registry peuvent être déployées dans l'environnement flexible App Engine.

Intégrations d'outils de livraison continue

Container Registry fonctionne avec plusieurs systèmes de diffusion continue couramment utilisés.

Utiliser Container Registry avec des solutions tierces

Lors du développement de vos applications, vous souhaiterez peut-être utiliser une solution tierce de gestion de clusters, d'intégration continue, ou d'autres solutions en dehors de Google Cloud. Container Registry peut être intégré à ces services externes.

Ces solutions peuvent ne pas fournir d'accès à l'outil de ligne de commande gcloud pour l'authentification. Dans ce cas, vous pouvez vous authentifier directement auprès de Container Registry à l'aide de docker login. Pour en savoir plus, consultez la page Authentification avancée.

Pour obtenir la liste des solutions tierces qui s'intègrent à Container Registry, consultez la page Intégrations d'outils de diffusion continue.