L'envoi (importation) et l'extraction (téléchargement) d'images représentent deux des tâches Container Registry les plus courantes. Ce document porte sur l'envoi et le pull d'images avec Docker.
Si vous utilisez Cloud Build, consultez la documentation Cloud Build pour en savoir plus sur la création et le transfert de conteneurs vers Container Registry.
Pour découvrir comment répertorier des images, leur ajouter des tags et les supprimer, consultez la page Gérer les images.
Avant de commencer
Vous devez disposer des éléments suivants :
Vous avez activé Container Registry dans votre projet.
Ajouter un registre
Vous pouvez ajouter les registres Container Registry suivants à un projet:
Nom d'hôte | Emplacement de stockage |
---|---|
gcr.io |
Stocke les images dans des centres de données aux États-Unis |
asia.gcr.io |
Stocke les images dans des centres de données en Asie |
eu.gcr.io |
Stocke les images dans des centres de données situés dans les États membres de l'Union européenne |
us.gcr.io |
Stocke les images dans des centres de données aux États-Unis |
Le premier transfert d'image vers un nom d'hôte déclenche la création du registre dans un projet et du bucket de stockage Cloud Storage correspondant. Cette poussée initiale nécessite des autorisations à l'échelle du projet pour créer des buckets de stockage.
Une fois qu'un hôte de registre existe dans votre projet, vous pouvez configurer des autorisations sur le bucket de stockage pour contrôler l'accès aux images du registre.
Pour ajouter un registre et configurer les autorisations:
Vérifiez que vous disposez des autorisations requises. Vous devez disposer du rôle Storage Admin (roles/storage.admin), ou d'un rôle personnalisé ou d'un rôle prédéfini disposant des mêmes autorisations.
Pour savoir comment accorder le rôle "Administrateur de l'espace de stockage" au niveau du projet, consultez la documentation IAM.
Transférez une image initiale vers l'hôte. Par exemple, les commandes suivantes:
- Extraire l'image
busybox
de Docker Hub - Ajoutez un tag à l'image avec son chemin d'accès cible dans Container Registry, y compris l'hôte du registre
gcr.io
et l'ID de projetmy-project
. - Transfère l'image vers le registre.
docker pull busybox docker tag busybox gcr.io/my-project/busybox docker push gcr.io/my-project/busybox
- Extraire l'image
Container Registry ajoute le registre à votre projet, crée un bucket de stockage pour le registre et stocke l'image.
Vous pouvez désormais configurer le contrôle des accès sur le bucket de stockage du registre pour accorder l'accès au registre à d'autres utilisateurs.
Transférer une image vers un registre
Pour transférer une image locale vers Container Registry à l'aide de Docker ou d'un autre outil tiers, vous devez d'abord lui ajouter un tag correspondant au nom du registre, puis transférer l'image.
Les facteurs suivants peuvent avoir un impact sur l'importation d'images volumineuses:
- Heure d'importation
- Toute requête envoyée à Container Registry a un délai d'expiration de 2 heures. Si vous vous authentifiez sur Container Registry à l'aide d'un jeton d'accès, celui-ci expire au bout de 60 minutes. Si vous estimez que le délai d'importation peut dépasser 60 minutes, utilisez une autre méthode d'authentification.
- Taille d'image
- Container Registry utilise Cloud Storage pour le stockage sous-jacent des registres. Les quotas et limites Cloud Storage s'appliquent à chaque registre, y compris à la taille maximale de 5 To pour un objet stocké.
- Container Registry n'est pas compatible avec les importations fragmentées de Docker. Certains outils permettent d'importer des images volumineuses par le biais d'importations fragmentées ou d'une seule importation monolithique. Vous devez utiliser des importations monolithiques pour transférer des images vers Container Registry.
Autorisations requises
Pour pousser une image, vous devez disposer de l'un des rôles Cloud Storage suivants ou d'un rôle disposant des mêmes autorisations:
- Transférer la première image vers un registre de votre projet
Rôle: Administrateur de l'espace de stockage (roles/storage.admin) au niveau du projet Google Cloud. Le rôle de propriétaire prédéfini inclut ces autorisations.
La première fois que vous transférez une image vers un hôte de registre dans votre projet (par exemple,
gcr.io
), Container Registry crée un bucket de stockage pour le registre. Le rôle "Administrateur de l'espace de stockage" dispose des autorisations nécessaires pour créer le bucket de stockage.- Transférer des images vers un registre existant de votre projet
Rôle: Rédacteur des anciens buckets de l'espace de stockage (roles/storage.legacyBucketWriter) sur le bucket de stockage du registre.
Ce rôle dispose des autorisations nécessaires pour importer et exporter des images pour les hôtes de registre existants de votre projet. Par exemple, si votre projet ne contient que le registre
gcr.io
, un utilisateur disposant du rôle "Storage Legacy Bucket Writer" peut transférer des images versgcr.io
, mais pas versasia.gcr.io
.
Pour en savoir plus sur l'octroi d'autorisations à un registre, consultez la section Configurer le contrôle des accès.
Ajouter un tag de nom de registre à l'image locale
Pour taguer une image:
- Vérifiez que vous avez configuré l'authentification dans Container Registry.
Déterminez le nom de l'image dans Container Registry:
Choisissez un nom d'hôte, qui spécifie l'emplacement où les images sont stockées.
gcr.io
héberge les images dans des centres de données aux États-Unis, mais cet emplacement peut être amené à changer par la suite.us.gcr.io
héberge les images dans des centres de données aux États-Unis, dans un bucket de stockage distinct de celui utilisé pour les images hébergées pargcr.io
.eu.gcr.io
héberge les images dans l'Union européenne.asia.gcr.io
héberge les images dans des centres de données 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.
Dans la console, le nom d'hôte des images apparaîtra sous Emplacement.
Choisissez un nom d'image cible, qui peut différer du nom de l'image sur votre ordinateur local. Par exemple, l'image locale peut s'appeler
web-image
, mais vous souhaitez la stocker dans Container Registry sous le nomweb-site
.Combinez le nom d'hôte, l'ID de votre projet dans la console Google Cloud et le nom de l'image cible:
HOSTNAME/PROJECT-ID/TARGET-IMAGE
Prenons l'exemple suivant :
- Nom d'hôte :
gcr.io
- Projet Google Cloud:
my-project
- Nom de l'image cible :
web-site
En combinant le nom d'hôte, le projet et le nom de l'image cible, vous obtenez le chemin d'accès complet de l'image à utiliser pour le taggage:
gcr.io/my-project/web-site
Si l'ID du projet contient le signe deux-points (
:
), consultez la section Projets à l'échelle du domaine.- Nom d'hôte :
Ajoutez un tag à l'image locale avec le nom de l'étape précédente. Si vous souhaitez ajouter une balise à cette version de l'image, indiquez son nom.
docker tag SOURCE_IMAGE HOSTNAME/PROJECT-ID/TARGET-IMAGE:TAG
Remplacez les éléments suivants :
- SOURCE_IMAGE correspond au nom ou à l'ID de l'image locale.
- HOSTNAME correspond à l'hôte du registre que vous avez choisi à l'étape 2.
- PROJECT est l'ID du projet Google Cloud.
- TARGET-IMAGE est le nom de l'image lorsqu'elle est stockée dans Container Registry.
- TAG est le tag que vous souhaitez associer à cette version d'image.
Par exemple, cette commande ajoute le tag
v1.5
à l'image localeweb-image
en tant quegcr.io/my-project/web-site
dans Container Registry.docker tag web-image gcr.io/my-project/web-site:v1.5
Si vous ne spécifiez pas de tag, Docker ajoute le tag par défaut
latest
. Étant donné quelatest
est une balise par défaut, elle représente la version d'image taguée en dernier avec la baliselatest
, et non nécessairement la version la plus récente d'une image.
Docker ajoute à votre image le nom et le tag que vous avez spécifiés dans la commande.
Transférer l'image avec son tag vers Container Registry
Vérifiez que vous avez configuré l'authentification dans Container Registry.
Transférez l'image avec son tag vers Container Registry:
Exécutez la commande suivante pour transférer une image avec un tag spécifique:
docker push HOSTNAME/PROJECT-ID/IMAGE:TAG
Si vous omettez
:TAG
, Docker pousse la version de l'image taguée aveclatest
.Par exemple, cette commande transfère l'image
gcr.io/my-project/web-site
avec le tagv1.5
:docker push gcr.io/my-project/web-site:v1.5
Lorsque vous transférez une image vers un hôte de registre qui n'existe pas encore dans votre projet, Container Registry crée un bucket de stockage pour l'hôte de registre.
Pour afficher l'image que vous avez transférée:
Accéder à la console Google Cloud pour consulter le registre et afficher l'image
Exécuter
gcloud container images list-tags
pour afficher la balise de l'image et le condensé généré automatiquement:gcloud container images list-tags HOSTNAME/PROJECT-ID/IMAGE
Le résultat de la commande ressemble à ce qui suit :
DIGEST TAGS TIMESTAMP 44bde... test 2017-..-..
Extraire des images d'un registre
Pour extraire une image, vous devez disposer du rôle Lecteur des objets Storage pour le bucket de stockage du référentiel ou d'un rôle disposant des mêmes autorisations.
Pour extraire une image de Container Registry, exécutez la commande :
docker pull HOSTNAME/PROJECT-ID/IMAGE:TAG
ou
docker pull HOSTNAME/PROJECT-ID/IMAGE@IMAGE_DIGEST
où :
- HOSTNAME est répertorié sous Emplacement dans la console. Il s'agit de l'une des quatre options suivantes :
gcr.io
,us.gcr.io
,eu.gcr.io
ouasia.gcr.io
. - PROJECT-ID est l'ID du projet dans la console Google Cloud.
Si l'ID du projet contient le signe deux-points (
:
), consultez la section Projets à l'échelle du domaine. - IMAGE est le nom de l'image dans Container Registry.
- TAG est le tag appliqué à l'image. Dans un registre, les tags sont uniques à une image.
- IMAGE_DIGEST est la valeur de hachage sha256 du contenu de l'image. Dans la console Google Cloud, cliquez sur une image spécifique pour voir ses métadonnées. Le condensé y apparaît sous l'intitulé Condensé de l'image.
Pour obtenir la commande d'extraction correspondant à une image spécifique, procédez comme suit :
Cliquez sur le nom d'une image pour accéder au registre spécifique.
Dans le registre, cochez la case à côté de la version de l'image que vous souhaitez extraire.
Cliquez sur AFFICHER LA COMMANDE D'EXTRACTION en haut de la page.
Copiez la commande d'extraction, qui identifie l'image à l'aide du tag ou du condensé.
Étapes suivantes
- Obtenez plus d'informations sur la gestion de vos images, y compris l'ajout ou la suppression de tags et la suppression d'images.
- Obtenez plus d'informations sur la configuration du contrôle des accès.
- Découvrez les composants et fonctionnalités de Container Registry.
- Si vous souhaitez exécuter des conteneurs sur Compute Engine, familiarisez-vous avec les conteneurs sur Compute Engine.