Lors de la transition de Container Registry vers Artifact Registry, vous pouvez copier les images Container Registry que vous souhaitez conserver dans Artifact Registry.
Présentation
Il existe plusieurs options pour copier des images de Container Registry vers Artifact Registry. Nous vous recommandons de copier les images à l'aide de l'outil de migration automatique, car il permet de copier plusieurs projets, de copier vos images même si vous avez déjà activé la redirection et de gérer un plus grand nombre d'images qu'avec d'autres méthodes. Si vous ne disposez pas de plus de 10 000 images et que vous n'avez pas encore activé la redirection, vous pouvez utiliser l'outil gcrane, qui permet également de copier des ensembles d'images à l'aide d'une seule commande.
Pour réduire les coûts, procédez comme suit:
Supprimez les anciennes images sans tag avant de copier les conteneurs dans Artifact Registry.
Si vous copiez des images dans un dépôt Artifact Registry standard (
pkg.dev
), désactivez l'analyse automatisée pour Artifact Registry avant de copier les images afin d'éviter les coûts d'analyse en double. Vous pouvez réactiver l'analyse automatisée après avoir copié toutes vos images.Si vous copiez des images dans un dépôt
gcr.io
sur Artifact Registry, vous n'avez pas besoin de désactiver l'analyse automatisée.Pour en savoir plus sur le contrôle des coûts liés à l'analyse des failles, consultez la page Contrôler vos coûts d'analyse des failles.
Supprimer les 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.
Un certain nombre d'outils sont disponibles pour identifier et automatiser la suppression des images dont vous n'avez plus besoin. Par exemple, l'outil gcr-cleaner vous aide à rechercher et à supprimer d'anciennes images 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 les images avec l'outil de migration automatique
Utilisez l'outil de migration automatique pour passer de Container Registry aux dépôts gcr.io sur Artifact Registry ou vers des dépôts Artifact Registry standards, ou pour copier vos images de Container Registry vers Artifact Registry.
Suivez les instructions de la section Migrer automatiquement vers Artifact Registry pour copier vos images de Container Registry vers Artifact Registry.
Copier des images avec gcrane
Pour copier des images vers Artifact Registry, vous pouvez utiliser l'outil gcrane
.
gcrane
offre plusieurs avantages par rapport à la copie d'images avec Docker, par exemple:
- 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.
Cette option de copie rapide permet de copier des images entre Container Registry et Artifact Registry au sein d'un même emplacement multirégional Google Cloud.
L'option de copie rapide est également la méthode la moins coûteuse. Étant donné que cette option ne repose pas sur l'extraction et le transfert d'images, aucuns frais ne s'appliquent pour le transfert de données réseau à partir de Container Registry lors de l'opération de copie.
Conditions requises
Vérifiez les conditions suivantes:
Vous avez activé Artifact Registry dans les projets Google Cloud source et de destination.
Vous avez créé un dépôt Docker dans Artifact Registry pour les images que vous copiez.
Vous disposez des autorisations requises:
Lecteur des objets Storage (
roles/storage.objectViewer
) ou rôle disposant d'autorisations équivalentes sur le bucket de stockage pour l'hôte Container Registry. En savoir plus sur l'attribution de ces autorisationsRédacteur Artifact Registry (
roles/artifactregistry.writer
) ou rôle disposant d'autorisations équivalentes pour le dépôt Artifact Registry. En savoir plus sur l'attribution de ces autorisations
Pour utiliser l'option de copie rapide, vérifiez les conditions suivantes:
Vous devez utiliser gcrane 0.10.0 ou version ultérieure. Les instructions de configuration de gcrane figurant dans cette documentation incluent la procédure de téléchargement de la dernière version.
Pour vérifier la version d'une installation gcrane existante, exécutez la commande suivante:
gcrane version
Le compte de service Artifact Registry géré par Google du projet de destination doit disposer du rôle Lecteur des objets Storage (
roles/storage.objectViewer
) ou d'un rôle doté d'autorisations équivalentes dans le projet source. Exécutez la commande suivante pour attribuer le rôle de lecteur des objets Storage au compte de service:gcloud projects add-iam-policy-binding SOURCE_PROJECT_ID \ --member='serviceAccount:service-DEST_PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com' \ --role='roles/storage.objectViewer'
Remplacez
SOURCE_PROJECT_ID
par l'ID (par exemple, "my-project") du projet Google Cloud associé à vos hôtes Container Registry.Remplacez
DEST_PROJECT_NUMBER
par le numéro (par exemple, 12345) du projet Google Cloud associé à votre dépôt Artifact Registry.
Options et coûts liés à l'environnement
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:
- Temps d'activité de l'instance pour la VM Compute Engine.
- Transfert de données réseau pour les images que vous copiez, sauf si vous utilisez l'option de copie rapide. Pour réduire les coûts:
- Utilisez une instance de VM située dans le même emplacement que le bucket de stockage Container Registry.
- Pour réduire les coûts et optimiser la vitesse de copie, utilisez un dépôt Artifact Registry dans le même emplacement multirégional que Container Registry. Le transfert de données au sein d'un même emplacement multirégional n'entraîne aucuns frais et est beaucoup plus rapide que la copie entre plusieurs emplacements.
Cloud Shell : option permettant de copier de petits ensembles de 40 Go ou moins. Étant donné que
gcrane
ignore l'importation des calques d'image déjà importés, cette limite s'applique aux 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:transfert de données réseau pour les images que vous copiez, sauf si vous utilisez l'option de copie rapide.
- 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
- Pour réduire les coûts et optimiser la vitesse de copie, utilisez un dépôt Artifact Registry dans le même emplacement multirégional que Container Registry. Le transfert de données au sein d'un même emplacement multirégional n'entraîne aucuns frais et est beaucoup plus rapide que la copie entre plusieurs emplacements.
Ordinateur local : si vous ne pouvez pas utiliser les autres options, vous pouvez exécuter
gcrane
à partir d'un ordinateur local.Coûts:transfert de données réseau pour les images que vous copiez, sauf si vous utilisez l'option de copie rapide.
Pour réduire les coûts et optimiser la vitesse de copie, utilisez un dépôt Artifact Registry dans le même emplacement multirégional que Container Registry. Le transfert de données au sein d'un même emplacement multirégional n'entraîne aucuns frais et est beaucoup plus rapide que la copie entre emplacements.
Configurer Compute Engine
Pour copier des images avec gcrane
depuis une instance de VM Compute Engine, procédez comme suit :
- Créez une instance de VM. Pour réduire les coûts, créez l'instance au même emplacement que celui du registre depuis lequel vous effectuez la copie.
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.
Arrêtez l'instance de VM. Consultez la section Arrêter une instance.
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.
Redémarrez l'instance de VM. Consultez la section Démarrer une instance arrêtée.
Connectez-vous à l'instance de VM via SSH.
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
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/
Exécutez la commande
gcrane --help
pour vérifier l'installation.
Vous êtes maintenant prêt à copier les images. Pour continuer:
Configurer Cloud Shell
Ouvrez une fenêtre Cloud Shell.
Définissez le projet par défaut. Remplacez PROJECT par l'ID du projet sur lequel Container Registry et Artifact Registry sont installés.
gcloud config set project PROJECT.
Exécutez la commande suivante pour télécharger l'outil
gcrane
.curl -L \ https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \ -o go-containerregistry.tar.gz
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/
Exécutez la commande
gcrane --help
pour vérifier l'installation.
Vous êtes maintenant prêt à copier les images. Pour continuer:
Configurer une machine locale
Téléchargez
gcrane
à partir du dépôt GitHub. Par exemple, la commande suivante télécharge la distribution Linux x86-64 à 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
Exécutez les commandes suivantes pour rendre la commande
gcrane
exécutable. Les commandes supposent que le fichier téléchargé s'appellego-containerregistry.tar.gz
.tar -zxvf go-containerregistry.tar.gz chmod +x gcrane sudo mv gcrane /usr/local/bin/
Exécutez la commande
gcrane --help
pour vérifier l'installation.
Vous êtes maintenant prêt à copier les images. Pour continuer:
Identifier les images à copier
Après avoir installé gcrane, vous pouvez répertorier les images existantes dans Container Registry pour trouver 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
ouus
. - Remplacez
PROJECT
par l'ID du projet.
Consultez la section Copier des images pour découvrir 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 de l'hôte Container Registry :
asia
,eu
ouus
. - AR-LOCATION est l'emplacement régional ou 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 est le nom de l'image dans Artifact Registry.
Prenons l'exemple de l'image source et de destination suivante:
- Image Container Registry :
eu.gcr.io/my-project/my-image:tag1
- Image Artifact Registry :
europe-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-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 des images de manière récursive sous un chemin d'accès 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 de l'hôte Container Registry :
asia
,eu
ouus
. - AR-LOCATION est l'emplacement régional ou 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.
Prenons l'exemple des 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-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-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'un emplacement Container Registry multirégional, 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 de l'hôte Container Registry :
asia
,eu
ouus
. - AR-LOCATION est l'emplacement régional ou 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.
Prenons l'exemple du registre source et du dépôt Artifact Registry cible suivants. 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-docker.pkg.dev/new-project/my-repo
La commande suivante copie toutes les images de l'emplacement multirégional eu
du projet my-project
vers le dépôt my-repo
du projet new-project
.
gcrane cp -r eu.gcr.io/my-project \
europe-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.
- Extraire une image de Container Registry
- Transférer l'image vers le dépôt Artifact Registry
Conditions requises
Vérifiez les conditions suivantes:
Vous avez créé un dépôt Docker dans Artifact Registry pour les images que vous copiez.
Vous disposez des autorisations requises:
Lecteur des objets Storage (
roles/storage.objectViewer
) ou rôle disposant d'autorisations équivalentes sur le bucket de stockage pour l'hôte Container Registry. En savoir plus sur l'attribution de ces autorisationsRédacteur Artifact Registry (
roles/artifactregistry.writer
) ou rôle disposant d'autorisations équivalentes pour le dépôt Artifact Registry. En savoir plus sur l'attribution de ces autorisations
Vous avez configuré Docker pour qu'il s'authentifie à la fois auprès de Container Registry et d'Artifact Registry.
Coûts
Lorsque vous extrayez une image, le transfert de données réseau vous est facturé. Le tarif spécifique dépend de la destination de votre commande pull. Par exemple, si vous extrayez une image d'une session Cloud Shell, la tarification s'applique au transfert de données réseau dans Google Cloud. Tarifs du transfert de données réseau général (si vous extrayez une image vers une machine en dehors de Google Cloud).
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 deaustralia-southeast1-docker.pkg.dev
,europe-north1-docker.pkg.dev
eteurope-docker.pkg.dev
. - Étant donné qu'Artifact Registry accepte plusieurs dépôts Docker dans un seul 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
que vous souhaitez copier dans un dépôt Artifact Registry de la région europe
.
- Image Container Registry :
eu.gcr.io/my-project/my-image:tag1
- Image Artifact Registry :
europe-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 transfère l'image vers le 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
dans le projet new-project
.
docker push europe-north1-docker.pkg.dev/new-project/my-repo/my-image
Pour en savoir plus sur le transfert et l'extraction d'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 dans votre dépôt Artifact Registry.
Conditions requises
Vérifiez les conditions suivantes:
Vous avez créé un dépôt Docker dans Artifact Registry pour les images que vous copiez.
Vous disposez des autorisations requises:
Lecteur des objets Storage (
roles/storage.objectViewer
) ou rôle disposant d'autorisations équivalentes sur le bucket de stockage pour l'hôte Container Registry. En savoir plus sur l'attribution de ces autorisationsRédacteur Artifact Registry (
roles/artifactregistry.writer
) ou rôle disposant d'autorisations équivalentes pour le dépôt Artifact Registry. En savoir plus sur l'attribution de ces autorisations
Coûts
Si Container Registry se trouve dans un emplacement différent de celui de votre dépôt Artifact Registry, des frais de transfert de données réseau s'appliquent pour les images que vous copiez. Si les deux services se trouvent au même emplacement, le transfert de données réseau est gratuit.
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 correspond au chemin d'accès complet de l'image dans le dépôt Artifact Registry.
Prenons l'exemple des images source et de destination suivantes:
- Image Container Registry :
eu.gcr.io/my-project/my-image:tag1
- Image Artifact Registry :
europe-docker.pkg.dev/my-project/my-repo/my-image:tag1
Cette commande copie l'image de Container Registry de l'emplacement multirégional eu
vers le dépôt my-repo
de l'emplacement multirégional europe
.
gcloud container images add-tag eu.gcr.io/my-project/my-image:tag1 \
europe-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-docker.pkg.dev/new-project/my-repo/my-image:tag1
Étapes suivantes
- Obtenez plus d'informations sur la transition de Container Registry vers Artifact Registry, y compris sur le comparatif des fonctionnalités et des commandes de la gcloud CLI.
- Découvrez les modifications pour Docker.
- Découvrez les modifications apportées à la création et au déploiement dans Google Cloud.