Cette page a été traduite par l'API Cloud Translation.
Switch to English

Copier des images à partir de Container Registry

Dans le cadre de la transition de Container Registry vers Artifact Registry, vous pouvez copier les images Container Registry que vous souhaitez conserver dans Artifact Registry.

Avant de commencer

Vérifiez que vous avez bien :

  1. créé un dépôt Docker existant dans Artifact Registry pour vos images ;
  2. configuré des autorisations pour accéder au dépôt ;
  3. configuré l'authentification au dépôt.

Consultez le guide de configuration pour les utilisateurs de Container Registry pour en savoir plus sur ces tâches et les comparer aux mêmes tâches dans Container Registry.

Présentation

Il existe plusieurs options pour copier des images à partir de Container Registry que vous souhaitez stocker et réutiliser dans Artifact Registry. Nous vous recommandons de copier les fichiers avec l'outil gcrane, car il permet la copie d'ensembles d'images à l'aide d'une seule commande.

Pour réduire les coûts, pensez à supprimer les anciennes images non taguées avant de copier les conteneurs dans Artifact Registry.

Supprimer des images sans tag de Container Registry

La suppression des images non taguées permet de réduire le coût de stockage dans Container Registry ainsi que le coût de copie des images de Container Registry vers Artifact Registry.

Plusieurs outils permettent d'identifier et d'automatiser la suppression des images dont vous n'avez plus besoin. Par exemple, l'outil gcr-cleaner vous permet de rechercher et de supprimer des images anciennes en fonction de différents critères. L'outil gcr-cleaner n'est pas un produit Google officiel.

Pour en savoir plus sur la configuration et l'utilisation de l'outil, consultez la documentation sur gcr-cleaner.

Copier des images avec gcrane

Pour copier des images dans Artifact Registry, nous vous recommandons d'utiliser l'outil gcrane.

gcrane offre plusieurs avantages, y compris les suivants:

  • Vous pouvez copier des ensembles d'images à l'aide d'une seule commande, y compris toutes les images d'un chemin spécifié ou toutes les images stockées sur un hôte multirégional dans votre projet.
  • Vous pouvez ignorer les calques d'image déjà importés.

Vous pouvez exécuter gcrane à partir de plusieurs environnements:

  • Instance Compute Engine : utilisez cette option si vous souhaitez copier un plus grand nombre de conteneurs.

    Coûts:disponibilité des instances pour la VM Compute Engine. Si l'instance de VM se trouve dans un emplacement différent de celui du bucket de stockage Container Registry, des frais de sortie réseau s'appliquent pour les images que vous copiez.

  • Cloud Shell : option permettant de copier de petits ensembles d'environ 40 Go au maximum. Comme gcrane ignore l'importation des calques d'image déjà importés, cette limite concerne les nouvelles données que vous copiez.

    La copie de dépôts plus volumineux peut entraîner la déconnexion de Cloud Shell après la fin du délai d'inactivité de la requête, qui est de 10 minutes.

    Coûts:si l'instance Cloud Shell se trouve dans un emplacement différent de celui du bucket de stockage Container Registry, des frais de sortie réseau s'appliquent pour les images que vous copier. Vous ne pouvez pas choisir l'emplacement d'une session Cloud Shell. Pour vérifier l'emplacement de la session en cours, exécutez la commande suivante:

    curl metadata/computeMetadata/v1/instance/zone
    
  • Machine locale : si vous ne pouvez pas utiliser les autres options, vous pouvez exécuter gcrane à partir d'une machine locale.

    Coûts: des frais de sortie réseau s'appliquent aux images que vous copiez.

Configurer Compute Engine

Pour copier des images avec gcrane depuis une instance de VM Compute Engine, procédez comme suit :

  1. Créez une instance de VM dans le même projet où Container Registry et Artifact Registry sont activés. Pour réduire les coûts, créez l'instance dans le même emplacement que votre hôte Container Registry.
  2. Par défaut, l'instance de VM est associée au compte de service par défaut et dispose des autorisations nécessaires pour extraire des images. Vous devez modifier le niveau d'accès pour que l'instance de VM puisse transférer des images.

    1. Arrêtez l'instance de VM. Consultez la section Arrêter une instance.

    2. Modifiez le niveau d'accès à l'aide de la commande suivante:

      gcloud compute instances set-service-account INSTANCE --scopes=storage-rw
      

      Remplacez INSTANCE par le nom de l'instance de VM.

    3. Redémarrez l'instance de VM. Consultez la section Démarrer une instance arrêtée.

  3. Connectez-vous à l'instance de VM à l'aide de SSH.

  4. Exécutez la commande suivante pour télécharger gcrane.

    curl -L \
    https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \
    -o go-containerregistry.tar.gz
    
  5. Exécutez les commandes suivantes pour rendre la commande gcrane exécutable.

     tar -zxvf go-containerregistry.tar.gz
     chmod +x gcrane
     sudo mv gcrane /usr/local/bin/
     ```
    
  6. Exécutez la commande gcrane --help pour vérifier l'installation.

Vous pouvez à présent copier des images. Pour continuer:

Configurer Cloud Shell

  1. Ouvrez une fenêtre Cloud Shell.

    Ouvrir Cloud Shell

  2. Définissez le projet par défaut. Remplacez PROJECT par l'ID du projet dans lequel Container Registry et Artifact Registry sont installés.

    gcloud config set project PROJECT.
    
  3. Exécutez la commande suivante pour télécharger gcrane.

    curl -L \
    https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \
    -o go-containerregistry.tar.gz
    
  4. Exécutez les commandes suivantes pour rendre la commande gcrane exécutable.

    tar -zxvf go-containerregistry.tar.gz
    chmod +x gcrane
    sudo mv gcrane /usr/local/bin/
    
  5. Exécutez la commande gcrane --help pour vérifier l'installation.

Vous pouvez à présent copier des images. Pour continuer:

Configurer une machine locale

  1. Assurez-vous d'être authentifié auprès de Container Registry et de Artifact Registry. Si vous utilisez des comptes différents pour chaque service, vous devez vous assurer que vous êtes authentifié auprès des deux services.

  2. Téléchargez gcrane à partir du dépôt GitHub. Vous pouvez exécuter la commande suivante pour la télécharger à partir de la ligne de commande.

    curl -L \
    https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \
    -o go-containerregistry.tar.gz
    
  3. Exécutez les commandes suivantes pour rendre la commande gcrane exécutable. Les commandes supposent que le fichier téléchargé s'appelle go-containerregistry.tar.gz.

    tar -zxvf go-containerregistry.tar.gz
    chmod +x gcrane
    sudo mv gcrane /usr/local/bin/
    
  4. Exécutez la commande gcrane --help pour vérifier l'installation.

Vous pouvez à présent copier des images. Pour continuer:

Identifier les images à copier

Après avoir installé gcrane, vous pouvez répertorier les images existantes dans Container Registry pour rechercher celles que vous souhaitez copier.

Pour répertorier les images existantes, exécutez la commande suivante:

gcrane ls LOCATION.gcr.io/PROJECT

Pour répertorier les tags d'une image, exécutez la commande suivante:

gcrane ls LOCATION.gcr.io/PROJECT/IMAGE

Pour répertorier les images de manière récursive sous un chemin spécifique, exécutez la commande suivante:

gcrane ls -r LOCATION.gcr.io/PROJECT/PATH

Pour chacune des commandes:

  • Remplacez LOCATION par l'emplacement multirégional du registre: asia, eu ou us.
  • Remplacez PROJECT par l'ID du projet.

Consultez la section Copier des images pour connaître les commandes permettant de copier vos images.

Copier des images

Vous pouvez copier des images individuelles à partir de Container Registry, toutes les images situées sous un chemin d'accès spécifié à un emplacement ou toutes les images stockées dans un emplacement spécifique.

Copier une seule image

Pour copier une seule image taguée, exécutez la commande suivante :

gcrane cp GCR-LOCATION.gcr.io/PROJECT/IMAGE \
AR-LOCATION.pkg.dev/PROJECT/REPOSITORY/IMAGE

Où :

  • GCR-LOCATION correspond à l'emplacement multirégional Container Registry : asia, eu ou us.
  • AR-LOCATION est la région ou l'emplacement multirégional du dépôt.
  • PROJECT est l'ID de projet.
  • REPOSITORY est le nom du dépôt Artifact Registry.
  • GCR-IMAGE est l'image que vous souhaitez copier à partir de Container Registry.
  • AR-IMAGE correspond au nom de l'image dans Artifact Registry.

Par exemple, considérons l'image source et de destination suivante:

  • Image Container Registry : eu.gcr.io/my-project/my-image:tag1
  • Image Artifact Registry : europe-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1

Exécutez la commande suivante pour copier l'image:

gcrane cp eu.gcr.io/my-project/my-image:tag1 \
europe-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1

Copier toutes les images situées sous un chemin d'accès spécifique

Pour copier de manière récursive des images sous un chemin spécifique dans Container Registry, exécutez la commande suivante:

gcrane cp -r GCR-LOCATION.gcr.io/PROJECT/GCR-PATH \
AR-LOCATION.pkg.dev/PROJECT/REPOSITORY/AR-PATH

Où :

  • GCR-LOCATION correspond à l'emplacement multirégional Container Registry : asia, eu ou us.
  • AR-LOCATION est la région ou l'emplacement multirégional du dépôt.
  • PROJECT est l'ID de projet.
  • REPOSITORY est le nom du dépôt Artifact Registry.
  • GCR-PATH est le chemin d'accès aux fichiers que vous souhaitez copier.
  • AR-PATH est le chemin d'accès aux images de votre dépôt Artifact Registry.

Par exemple, considérons les chemins d'accès source et de destination suivants:

  • Chemin d'accès Container Registry: eu.gcr.io/my-project/test-images/testing
  • Chemin d'accès Artifact Registry: europe-west1-docker.pkg.dev/my-project/my-repo/test-images/testing

La commande suivante copie de manière récursive toutes les images sous test-images/testing dans le dépôt my-repo:

gcrane cp -r eu.gcr.io/my-project/test-images/testing \
europe-west1-docker.pkg.dev/my-project/my-repo/test-images/testing

Copier toutes les images d'un emplacement Container Registry

Pour copier toutes les images d'une zone multirégionale de Container Registry, exécutez la commande suivante:

gcrane cp -r GCR-LOCATION.gcr.io/PROJECT \
AR-LOCATION.pkg.dev/PROJECT/REPOSITORY

Où :

  • GCR-LOCATION correspond à l'emplacement multirégional Container Registry : asia, eu ou us.
  • AR-LOCATION est la région ou l'emplacement multirégional du dépôt.
  • PROJECT est l'ID de projet.
  • REPOSITORY est le nom du dépôt Artifact Registry.

Si vous souhaitez copier des images à partir de plusieurs emplacements Container Registry dans votre projet, exécutez la commande une fois pour chaque hôte.

Par exemple, considérons le dépôt source suivant et le dépôt Artifact Registry cible. Dans cet exemple, Container Registry et Artifact Registry se trouvent dans des projets différents.

  • Hôte Container Registry : eu.gcr.io/my-project
  • Image Artifact Registry : europe-west1-docker.pkg.dev/new-project/my-repo

La commande suivante copie toutes les images de l'emplacement multirégional eu du projet my-project dans le dépôt my-repo du projet new-project.

gcrane cp -r eu.gcr.io/my-project \
europe-west1-docker.pkg.dev/new-project/my-repo

Copier des images avec Docker

Contrairement aux méthodes de copie gcrane et gcloud, cette approche est un processus en deux étapes.

  1. Extraire une image de Container Registry
  2. Transférer l'image vers le dépôt Artifact Registry

Coûts:lorsque vous extrayez une image, la sortie réseau vous est facturée. Les tarifs spécifiques dépendent de la destination de la commande d'extraction. Par exemple, si vous extrayez une image d'une session Cloud Shell, les tarifs sont calculés pour la sortie réseau dans Google Cloud. Si vous extrayez une image vers une machine en dehors de Google Cloud, les tarifs de sortie de réseau générale.

Les commandes Docker que vous utilisez pour ajouter des tags, transférer et extraire des images dans Artifact Registry sont semblables à celles que vous utilisez dans Container Registry. Il existe deux différences principales :

  • Le nom d'hôte des dépôts Docker Artifact Registry comprend un préfixe d'emplacement suivi de -docker.pkg.dev. Par exemple, il peut s'agir de australia-southeast1-docker.pkg.dev, europe-north1-docker.pkg.dev et europe-docker.pkg.dev.
  • Comme Artifact Registry accepte plusieurs dépôts Docker dans un même projet, vous devez spécifier le nom du dépôt dans les commandes.

Pour copier une image dans Artifact Registry avec Docker, extrayez l'image de Container Registry, puis transférez-la vers votre dépôt Artifact Registry.

Prenons l'exemple d'une image Container Registry dans l'emplacement multirégional eu et que vous souhaitez copier dans un dépôt Artifact Registry dans la région europe-west1.

  • Image Container Registry : eu.gcr.io/my-project/my-image:tag1
  • Image Artifact Registry : europe-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1

La commande suivante extrait l'image de Container Registry.

docker pull eu.gcr.io/my-project/my-image:tag1

La commande suivante envoie l'image au dépôt Artifact Registry nommé my-repo.

docker push europe-north1-docker.pkg.dev/my-project/my-repo/my-image

Vous pouvez également transférer des images vers un dépôt Artifact Registry que vous avez configuré dans un autre projet. Cet exemple transfère la même image source vers le dépôt my-repo du projet new-project.

docker push europe-north1-docker.pkg.dev/new-project/my-repo/my-image

Pour découvrir comment transférer et extraire des images dans Artifact Registry, consultez la page Transférer et extraire des images.

Copier des images avec gcloud

Exécutez la commande gcloud container images add-tag pour copier une image de Container Registry vers votre dépôt Artifact Registry.

Coûts:si Container Registry se trouve dans un emplacement différent de votre dépôt Artifact Registry, des frais de sortie réseau s'appliquent aux images que vous copiez. Si les deux services se trouvent au même emplacement, la sortie réseau est gratuite.

Exécutez la commande suivante pour copier une image de Container Registry vers Artifact Registry:

gcloud container images add-tag GCR-IMAGE AR-IMAGE

Où :

  • GCR-IMAGE est le chemin d'accès complet à l'image Container Registry.
  • AR-IMAGE est le chemin d'accès complet à l'image dans le dépôt Artifact Registry.

Par exemple, considérons les images source et de destination suivantes:

  • Image Container Registry : eu.gcr.io/my-project/my-image:tag1
  • Image Artifact Registry : europe-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1

Cette commande copie l'image de Container Registry dans l'emplacement multirégional eu vers le dépôt my-repo de la région europe-west1.

gcloud container images add-tag eu.gcr.io/my-project/my-image:tag1 \
europe-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1

Vous pouvez également copier des images dans un dépôt Artifact Registry que vous avez configuré dans un autre projet. Cet exemple copie la même image source dans le dépôt my-repo du projet new-project.

gcloud container images add-tag eu.gcr.io/my-project/my-image:tag1 \
europe-west1-docker.pkg.dev/new-project/my-repo/my-image:tag1

Étape suivante