Transférer et extraire des images

Vous trouverez sur cette page la procédure à suivre pour transférer et extraire des images, qui font partie des deux tâches les plus couramment effectuées avec Container Registry. Pour transférer une nouvelle image vers Container Registry, vous devez d'abord lui ajouter un tag représentant le nom du registre, comme décrit ci-dessous.

Pour apprendre les bases de Container Registry et être opérationnel, consultez le guide de démarrage rapide.

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

Assurez-vous que les conditions suivantes sont remplies :

  1. La facturation est activée pour votre projet.

  2. L'API Container Registry est activé.

  3. Vous avez installé la version la plus récente du SDK Cloud, qui inclut l'outil de ligne de commande gcloud.

  4. Vous avez installé Docker. La version 18.03 ou une version plus récente est requise si vous souhaitez utiliser l'assistant d'identification gcloud pour l'authentification (recommandé).

    Si vous utilisez un système d'exploitation basé sur Linux, tel que Debian ou Ubuntu, ajoutez votre nom d'utilisateur au groupe docker afin de pouvoir exécuter Docker sans utiliser la commande sudo :

    sudo usermod -a -G docker ${USER}

    Déconnectez-vous et reconnectez-vous pour que les modifications apportées à la liste des membres du groupe soient appliquées. Si vous utilisez une machine virtuelle, vous devrez peut-être la redémarrer pour que ces modifications prennent effet.

  5. Vous disposez des autorisations pour transférer et extraire des images dans votre registre.

  6. Vous avez configuré Docker pour utiliser gcloud en tant qu'assistant d'identification ou vous utilisez une autre méthode d'authentification. Pour utiliser gcloud comme assistant d'identification, exécutez la commande suivante :

    gcloud auth configure-docker
    
  7. Docker requiert que les assistants d'identification se trouvent dans le PATH système. Assurez-vous que l'assistant d'identification sélectionné, gcloud ou docker-credential-gcr, se trouve dans le PATH système.

Transférer une image vers un registre

Pour transférer une image locale vers Container Registry, vous devez d'abord lui ajouter un tag correspondant à son nom de registre, puis transférer l'image.

Ajouter un tag de nom de registre à l'image locale

  1. Déterminez le nom de registre :

    1. 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 par gcr.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.

    2. Choisissez un nom d'image. Celui-ci peut être différent du nom de l'image sur votre ordinateur local.

    3. Combinez le nom d'hôte, l'ID de votre projet dans Google Cloud Console et le nom de l'image :

      [HOSTNAME]/[PROJECT-ID]/[IMAGE]
      

      Si l'ID du projet contient le signe deux-points (:), consultez la section Projets à l'échelle du domaine.

  2. Ajoutez à l'image locale le tag correspondant à son nom de registre, à l'aide de la commande suivante :

    docker tag [SOURCE_IMAGE] [HOSTNAME]/[PROJECT-ID]/[IMAGE]
    

    [SOURCE_IMAGE] est le nom ou l'ID de l'image locale.

    Cette commande attribue à l'image son nom de registre et lui ajoute le tag latest. Si vous souhaitez appliquer un tag différent, exécutez la commande suivante :

    docker tag [SOURCE_IMAGE] [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
    

Transférer l'image avec son tag vers Container Registry

L'assistant d'identification Docker est le moyen le plus simple de configurer Docker pour vous authentifier directement auprès de Container Registry. Vous pouvez ensuite exécuter la commande docker pour ajouter un tag, ou encore pour transférer et extraire des images. Vous pouvez également utiliser les bibliothèques clientes pour gérer les images de conteneurs ou interagir directement avec l'API Docker.

Transférez l'image avec son tag vers Container Registry en exécutant la commande suivante :

docker push [HOSTNAME]/[PROJECT-ID]/[IMAGE]

Cette commande transfère l'image qui possède le tag latest. Si vous souhaitez transférer une image avec un autre tag, exécutez la commande suivante :

docker push [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

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é. Après avoir transféré votre image, vous pouvez effectuer les opérations suivantes :

  • Accéder à Cloud Console pour consulter le registre et afficher l'image

  • Exécuter gcloud container images list-tags pour afficher le ou les tags de l'image, ainsi que 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 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 ou asia.gcr.io.
  • [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.
  • [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, 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 :

  1. Cliquez sur le nom d'une image pour accéder au registre spécifique.

  2. Dans le registre, cochez la case à côté de la version de l'image que vous souhaitez extraire.

  3. Cliquez sur AFFICHER LA COMMANDE D'EXTRACTION en haut de la page.

  4. Copiez la commande d'extraction, qui identifie l'image à l'aide du tag ou du condensé.

Étapes suivantes