Ce document vous présente les différences entre Container Registry et Artifact Registry pour authentifier, transférer et récupérer des images de conteneur avec Docker.
Dans ce guide, les comparaisons se concentrent sur Artifact Registry standard des dépôts, des dépôts Artifact Registry standards et indépendants de Container Registry et sont compatibles avec toutes les fonctionnalités d'Artifact Registry.
Si votre administrateur a configuré
dépôts compatibles avec les domaines gcr.io, requêtes
vers les noms d'hôte gcr.io
sont automatiquement redirigés vers le
Artifact Registry. Pour utiliser un dépôt gcr.io hébergé sur
Artifact Registry, vous devez disposer
Rôle Artifact Registry ou avec
des autorisations équivalentes.
Pour en savoir plus sur les différences entre Container Registry et Artifact Registry lors de la compilation avec Cloud Build et du déploiement sur Cloud Run ou Google Kubernetes Engine, consultez Modifications pour Cloud Build, Cloud Run et GKE
Utilisez ces informations pour adapter les commandes, la configuration ou consacrée à Container Registry avec Docker.
Avant de commencer
Dans ce document, nous partons du principe que vous disposez des éléments suivants:
- Vous avez activé Artifact Registry dans votre projet.
- Vous avez installé Docker. Docker est inclus dans Cloud Shell.
Présentation
De manière générale, le workflow d'utilisation de Docker avec Container Registry ou Artifact Registry est le même.
Container Registry | Artifact Registry |
---|---|
Administrateur
|
Administrateur
|
Utilisateurs du registre
|
Utilisateurs du registre
|
Cependant, un raccourci pour Container Registry combine le rôle et les rôles utilisateur dans un workflow unique. Ce raccourci est courant dans les environnements suivants:
- Les guides de démarrage rapide et les tutoriels vous permettent d'effectuer des tests dans un environnement disposent d'autorisations étendues.
- Workflows qui utilisent Cloud Build, car le service Cloud Build dispose des autorisations nécessaires pour ajouter un hôte de registre dans le même projet.
Le workflow des raccourcis se présente comme suit:
- Activer l'API Container Registry.
- Accordez des autorisations au compte qui accédera à Container Registry.
Authentifiez-vous auprès du registre. L'option d'authentification la plus simple est d'utiliser l'assistant d'identification Docker dans la Google Cloud CLI. Il s'agit d'une étape de configuration unique.
gcloud auth configure-docker
Créez et taguez l'image. Par exemple, cette commande crée et ajoute un tag à l'image
gcr.io/my-project/my-image:tag1
:docker build -t gcr.io/my-project/my-image:tag1
Transférez l'image dans le registre. Exemple :
docker push gcr.io/my-project/my-image:tag1
Si l'hôte de registre
gcr.io
n'existe pas dans le projet, Container Registry ajoute l'hôte avant d'importer l'image.Extrayez l'image du registre ou déployez-la dans un environnement d'exécution Google Cloud. Exemple :
docker pull gcr.io/my-project/my-image:tag1
Ce workflow repose sur les raccourcis suivants :
- Le compte qui transfère des images dispose du rôle "Administrateur de l'espace de stockage" ou d'un rôle doté du rôle les mêmes autorisations comme Propriétaire. Les autorisations étendues de ce rôle permettent accès en lecture et en écriture à tous les buckets de stockage d'un projet, y compris aux buckets qui ne sont pas utilisés par Container Registry.
- Lorsque vous activez certaines API Google Cloud, l'API Container Registry est automatiquement activée. Autrement dit, les utilisateurs ont un accès implicite à Container Registry dans le même projet. Pour Par exemple, les utilisateurs autorisés à exécuter des compilations dans Cloud Build peuvent transférer des images registres et ajouter des hôtes de registre par défaut.
Dans Artifact Registry, la séparation est claire entre les rôles utilisateur administrateur et référentiel, ce qui modifie les étapes du workflow de compilation et de déploiement. Pour adapter le workflow Container Registry à Artifact Registry, assurez-vous que modifications suivantes. Chaque étape renvoie à des informations supplémentaires sur la modification du workflow.
Nouveau: activez l'API Artifact Registry.
Vous devez activer l'API Artifact Registry. Cloud Build et d'environnements d'exécution tels que Cloud Run et GKE n'activent pas automatiquement l'API pour vous.
Nouveau : créez le dépôt Docker cible s'il n'existe pas déjà. Vous devez créer un dépôt avant de pouvoir transférer des images vers Le transfert d'une image ne peut pas déclencher la création d'un dépôt, Le compte de service Cloud Build ne dispose pas des autorisations nécessaires pour créer des dépôts.
Accordez des autorisations au compte qui interagira avec Artifact Registry.
Modification : authentification au dépôt. Si vous utilisez l'assistant d'identification dans gcloud CLI, vous devez spécifier les hôtes que vous souhaitez ajouter à la configuration de votre client Docker. Pour Dans cet exemple, la commande suivante ajoute l'hôte
us-central1-docker.pkg.dev
:gcloud auth configure-docker us-central1-docker.pkg.dev
Modifié: créez l'image et ajoutez-lui un tag.
L'exemple de commande suivant est identique à celui de Container Registry, mais utilise un chemin d'accès de dépôt Artifact Registry pour l'image.
docker build -t us-central1-docker.pkg.dev/my-project/my-repo/my-image:tag1
Modifié: transférez l'image vers le dépôt à l'aide de la méthode Chemin d'accès à Artifact Registry. Exemple :
docker push us-central1-docker.pkg.dev/my-project/my-repo/my-image:tag1
Modification : extrayez l'image du dépôt à l'aide du chemin d'accès Artifact Registry. Exemple :
docker pull us-central1-docker.pkg.dev/my-project/my-repo/my-image:tag1
Activer l'API
Points essentiels :
- Vous devez activer l'API Artifact Registry en plus de l'API pour d'autres services Google Cloud, Cloud Build, Cloud Run et GKE.
La comparaison suivante décrit l'activation de l'API pour chaque service:
Container Registry
Vous devez activer l'API Container Registry. avant d'utiliser Docker ou d'autres clients tiers avec Container Registry.
Lorsque vous activez les API Google Cloud suivantes, Container Registry De plus, l'API est automatiquement activée:
- Environnement flexible App Engine
- Cloud Build
- Fonctions Cloud Run
- Cloud Run
- Analyse des conteneurs ou analyse à la demande dans l'analyse des artefacts
- Google Kubernetes Engine
Avec les autorisations par défaut, les utilisateurs autorisés à exécuter des builds dans Cloud Build, à analyser des conteneurs avec Artifact Analysis ou à déployer des conteneurs dans les environnements d'exécution Google Cloud ont implicitement accès aux images de Container Registry lorsqu'il se trouve dans le même projet.
Artifact Registry
Vous devez activer l'API Artifact Registry avant d'utiliser des clients Docker ou d'autres services Google Cloud avec Artifact Registry.
Les services tels que Cloud Build, Cloud Run et GKE n'activent pas automatiquement l'API Artifact Registry.
Vous pouvez activer plusieurs API dans le même projet à l'aide de gcloud. Par exemple, pour activer l'API Cloud Build et API Artifact Registry, exécutez la commande suivante:
gcloud services enable
artifactregistry.googleapis.com \
cloudbuild.googleapis.com
Ajouter des registres et des dépôts
Points essentiels :
Vous devez créer un dépôt Docker Artifact Registry avant de transférer un l'image.
Une étape de création de registre est souvent exclue de la documentation décrivant l'envoi d'images vers Container Registry, car un compte disposant d'autorisations Storage Admin peut ajouter un registre à un projet avec l'envoi initial à l'hôte du registre.
Container Registry stocke toutes les images dans une seule région multirégionale dans le même bucket de stockage. Dans Artifact Registry, vous pouvez créer plusieurs dans la même région ou dans un emplacement multirégional avec des règles d'accès distinctes.
La comparaison suivante décrit la configuration du dépôt dans chaque service:
Container Registry
Dans Container Registry, vous pouvez ajouter jusqu'à quatre hôtes de registre à votre projet. Pour ajouter un hôte de registre, transférez la première image.
Pour ajouter un registre tel que
gcr.io
à votre projet, un compte disposant du rôle "Administrateur de l'espace de stockage" au niveau du projet envoie une image initiale.Par exemple, si l'hôte
gcr.io
n'existe pas dans le projetmy-project
, transfert de l'imagegcr.io/my-project/my-image:1.0
: déclencheurs procédez comme suit:- Ajouter l'hôte
gcr.io
au projet - Créez un bucket de stockage pour
gcr.io
dans le projet. - Stocker l'image en tant que
gcr.io/my-project/my-image:1.0
- Ajouter l'hôte
Après ce transfert initial, vous pouvez accorder des autorisations au bucket de stockage pour d'autres utilisateurs.
Dans un projet, un hôte de registre stocke toutes les images dans le même bucket de stockage. Dans l'exemple suivant, le projet my-project
comporte deux images appelées web-app
dans le registre gcr.io
. L'un se trouve directement sous l'ID du projet
my-project
L'autre image se trouve dans le dépôt team1
.
gcr.io/my-project/web-app
gcr.io/my-project/team1/web-app
Artifact Registry
Un compte disposant du dépôt Artifact Registry Le rôle Administrateur doit créer le avant d'y transférer des images. Vous pouvez ensuite accorder des autorisations au dépôt pour d'autres utilisateurs.
Dans Artifact Registry, chaque dépôt est une ressource distincte. Par conséquent, tous les chemins d'accès aux images doivent inclure un dépôt.
Chemins d'accès aux images valides :
us-central1-docker.pkg.dev/my-project/team1/web-app:1.0
us-central1-docker.pkg.dev/my-project/team2/web-app:1.0
Chemin d'accès à l'image non valide (pas de dépôt) :
us-central1-docker.pkg.dev/my-project/web-app:1.0
Les exemples suivants illustrent les situations dans lesquelles le transfert d'une image vers le dépôt manquant échoue.
- Transférer une image vers
us-central1-docker.pkg.dev/my-project/team1
sius-central1-docker.pkg.dev/my-project/team1
n'existe pas. - Transférer une image vers
us-central1-docker.pkg.dev/my-project/team2
lorsqueus-central1-docker.pkg.dev/my-project/team1
existe, maisus-central1-docker.pkg.dev/my-project/team2
n'existe pas.
Accord d'autorisations...
Points essentiels :
- Attribuez le rôle Artifact Registry approprié au compte que vous utilisez avec Artifact Registry.
- Les services Google Cloud disposent d'un accès en lecture ou en écriture équivalent aux deux Container Registry et Artifact Registry. Toutefois, le compte de service Cloud Build par défaut ne peut pas créer de dépôts.
- Container Registry prend en charge le contrôle des accès au niveau du bucket de stockage. Artifact Registry est compatible avec le contrôle des accès au niveau du dépôt.
La comparaison suivante décrit la configuration des autorisations dans chaque service:
Container Registry
Container Registry utilise les rôles Cloud Storage pour contrôler les accès.
- Lecteur des objets Storage au niveau du bucket de stockage
- Extrayez (lisez) des images à partir des hôtes de registre existants du projet.
- Rédacteur des anciens buckets de l'espace de stockage au niveau du bucket de stockage
- Transférez (écriture) et extrayez (lecture) des images pour les hôtes de registre existants du projet.
- Administrateur de l'espace de stockage au niveau du projet
- Ajoutez un hôte de registre à un projet en envoyant une image initiale à l'hôte.
Après l'envoi initial de l'image vers un registre, vous accordez des rôles Cloud Storage aux autres comptes qui ont besoin d'accéder au bucket de stockage. Notez que tout disposant de toutes les autorisations du rôle "Administrateur de l'espace de stockage" peut lire, écrire et supprimer des buckets de stockage et des objets de stockage sur l'ensemble du projet.
Les autorisations d'un bucket de stockage s'appliquent à tous les dépôts du référentiel.
Par exemple, tout utilisateur disposant des autorisations de lecteur des objets Storage
bucket pour gcr.io/my-project
peut lire les images de tous ces dépôts:
gcr.io/my-project/team1
gcr.io/my-project/team2
gcr.io/my-project/test
gcr.io/my-project/production
Artifact Registry
Artifact Registry dispose de ses propres rôles pour contrôler l'accès. Ces rôles séparent clairement les rôles administrateur et utilisateur du dépôt.
Seuls les comptes qui gèrent des dépôts doivent disposer du rôle "Administrateur de dépôts Artifact Registry" ou "Administrateur Artifact Registry".
- Lecteur Artifact Registry
- Répertoriez les artefacts et les dépôts. Téléchargez les artefacts.
- Rédacteur Artifact Registry
- Répertorier les artefacts et les dépôts. Téléchargez des artefacts, importez de nouvelles versions d'artefacts et ajoutez ou mettez à jour des balises.
- Administrateur de dépôts Artifact Registry
- Autorisations "Rédacteur Artifact Registry" et autorisations de suppression les artefacts et les tags.
- Administrateur Artifact Registry
- Autorisations d'administrateur de dépôt Artifact Registry et autorisations de créer, mettre à jour, supprimer et accorder des autorisations aux dépôts.
Vous pouvez appliquer ces autorisations au niveau du dépôt. Exemple :
- Accorder l'accès à
us-central1-docker.pkg.dev/my-project/team1
à l'équipe 1 - Accorder l'accès à l'équipe 2 pour
us-central1-docker.pkg.dev/my-project/team2
.
Pour en savoir plus sur l'attribution d'autorisations Artifact Registry, consultez la Contrôle des accès.
S'authentifier auprès du registre
Points essentiels :
- Artifact Registry est compatible avec les mêmes méthodes d'authentification que Container Registry.
- Pour l'assistant d'identification Docker, vous devez spécifier les hôtes à ajouter à Docker la configuration du client.
- Pour l'authentification avec
docker login
, utilisez l'hôte Artifact Registry au lieu d'un hôte Container Registry.
Utiliser l'assistant d'identification
La commande gcloud auth configure-docker
et l'assistant d'identification autonome
configure Docker uniquement pour les noms d'hôte *.gcr.io
par défaut. Pour Artifact Registry,
vous devez spécifier la liste des hôtes Artifact Registry que vous souhaitez ajouter au client Docker
configuration.
Par exemple, pour configurer l'authentification auprès des dépôts Docker dans la région
us-central1
, exécutez la commande suivante:
gcloud auth configure-docker us-central1-docker.pkg.dev
Si vous ajoutez ultérieurement des dépôts dans us-east1
et asia-east1
, vous devez exécuter à nouveau la commande pour ajouter les noms d'hôte régionaux correspondants à votre configuration Docker.
gcloud auth configure-docker us-east-docker.pkg.dev,asia-east1-docker.pkg.dev
Pour en savoir plus sur les méthodes d'authentification Artifact Registry, consultez la page Configurer l'authentification pour Docker.
Utiliser l'authentification par mot de passe
Lorsque vous vous connectez à Docker, utilisez le nom d'hôte Artifact Registry au lieu d'un nom d'hôte *.gcr.io
. L'exemple suivant montre l'authentification avec une clé de compte de service encodée en base64 auprès de l'hôte us-central1-docker.pkg.dev
:
cat key.json | docker login -u _json_key_base64 --password-stdin \
https://us-central1-docker.pkg.dev
Créer des images et leur ajouter des tags
Points essentiels: - Artifact Registry utilise un nom d'hôte différent pour les dépôts.
Lorsque vous ajoutez un tag à une image, utilisez le chemin d'accès Artifact Registry au lieu du chemin d'accès Container Registry. Exemple :
docker tag my-image us-central1-docker.pkg.dev/my-project/my-repo/my-image:1.0
Transférer des images vers le registre
Points essentiels: - Dans Artifact Registry, le dépôt cible doit exister avant que vous puissiez transférer l'image. - Artifact Registry utilise un nom d'hôte différent pour les dépôts.
Lorsque vous transférez une image, utilisez le chemin d'accès Artifact Registry au lieu du chemin d'accès Container Registry. Exemple :
docker push us-central1-docker.pkg.dev/my-project/my-repo/my-image:1.0
Extraire des images du registre
Point essentiel :
- Les noms d'hôte Artifact Registry sont différents de ceux de Container Registry noms d'hôte.
Lorsque vous extrayez une image, utilisez le chemin d'accès Artifact Registry au lieu du chemin Chemin d'accès à Container Registry. Exemple :
docker pull us-central1-docker.pkg.dev/my-project/my-repo/my-image:1.0
Pour obtenir des exemples de déploiement d'images dans des environnements d'exécution Google Cloud, Cloud Run et GKE, consultez Déployer des images