Créer un dépôt distant Docker Hub
Créez un dépôt distant qui servira de proxy pour Docker Hub.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init
- Créez un compte Docker Hub.
-
Pour créer des dépôts distants et accorder l'accès à des dépôts individuels :
Administrateur Artifact Registry (
roles/artifactregistry.admin
) sur le projet -
Pour créer et gérer des secrets :
Rôle Administrateur Secret Manager (
roles/secretmanager.admin
) sur le projet - Cloud Shell
- Cloud Shell est un environnement shell permettant de gérer les ressources hébergées sur Google Cloud. Il est préinstallé avec Docker et la Google Cloud CLI, l'interface de ligne de commande principale pour Google Cloud.
- Shell local
- Si vous préférez utiliser votre interface système locale, vous devez installer Docker et gcloud CLI dans votre environnement.
Accédez à la console Google Cloud .
Cliquez sur le bouton Activer Cloud Shell :
.
Installez la gcloud CLI. Pour mettre à jour une installation existante, exécutez la commande
gcloud components update
.Installez Docker si ce n'est pas encore fait.
Docker nécessite un accès privilégié pour interagir avec les registres. Sous Linux ou Windows, ajoutez l'utilisateur que vous permet d'exécuter des commandes Docker dans le groupe de sécurité Docker. Cette étape n'est pas requise sous macOS, car Docker Desktop s'exécute sur une machine virtuelle en tant qu'utilisateur racine.
Linux
Le groupe de sécurité Docker s'appelle
docker
. Pour ajouter votre nom d'utilisateur, exécutez la commande suivante :sudo usermod -a -G docker ${USER}
Windows
Le groupe de sécurité Docker s'appelle
docker-users
. Pour ajouter un utilisateur à partir de l'invite de commande administrateur, exécutez la commande suivante :net localgroup docker-users DOMAIN\USERNAME /add
Où
- DOMAIN est votre domaine Windows.
- USERNAME est votre nom d'utilisateur.
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.
Pour vérifier que Docker est en cours d'exécution, utilisez la commande Docker suivante, qui renvoie la date et l'heure actuelles :
docker run --rm busybox date
L'option
--rm
supprime l'instance de conteneur en cas de fermeture.- Connectez-vous à Docker Hub.
- Créez un jeton d'accès personnel avec des autorisations en lecture seule.
Copiez le jeton d'accès.
Enregistrez le jeton d'accès dans un fichier texte sur votre ordinateur local ou dans Cloud Shell.
-
Accédez à la page Secret Manager dans la console Google Cloud .
-
Sur la page Secret Manager, cliquez sur Créer un secret.
-
Sur la page Créer un secret, sous Nom, nommez votre secret
my-secret
. -
Dans le champ Valeur du secret, saisissez votre jeton d'accès personnel Docker Hub.
-
Ne modifiez pas la section Régions.
-
Cliquez sur le bouton Créer un secret.
-
Accédez à la page Secret Manager dans la console Google Cloud .
-
Sur la page Secret Manager, cochez la case à côté de
my-secret
. -
S'il n'est pas déjà ouvert, cliquez sur Afficher le panneau d'informations pour ouvrir celui-ci.
-
Dans le panneau d'informations, cliquez sur Ajouter un compte principal.
-
Dans la zone de texte Nouveaux comptes principaux, saisissez l'adresse e-mail du compte de service Artifact Registry. L'adresse e-mail du compte de service Artifact Registry est au format suivant :
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
Où PROJECT-NUMBER est le numéro de votre projet.
Pour trouver votre numéro de projet :
-
Accédez à la page Tableau de bord dans la console Google Cloud .
-
Cliquez sur la liste déroulante de sélection du projet située en haut de la page.
-
Dans la fenêtre Sélectionner qui s'affiche, sélectionnez votre projet.
L'ID et le numéro du projet sont tous deux affichés sur la fiche Informations sur le projet du tableau de bord du projet.
-
-
Dans la liste déroulante Sélectionner un rôle, sélectionnez Gestionnaire de secrets, puis Accesseur de secrets Secret Manager.
-
Accédez à la page Tableau de bord dans la console Google Cloud .
-
Cliquez sur la liste déroulante de sélection du projet située en haut de la page.
-
Dans la fenêtre Sélectionner qui s'affiche, sélectionnez votre projet.
L'ID et le numéro du projet sont tous deux affichés sur la fiche Informations sur le projet du tableau de bord du projet.
quickstart-docker-hub-remote
est le nom du dépôt. Pour chaque emplacement de dépôt d'un projet, les noms de dépôt doivent être uniques.PROJECT_ID
est l'ID de votre projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.us-central1
est l'emplacement régional ou multirégional du dépôt. Vous pouvez ignorer cette option si vous définissez une valeur par défaut. Pour afficher la liste des emplacements acceptés, exécutez la commandegcloud artifacts locations list
."Remote Docker repository"
est la description facultative de votre dépôt. N'incluez pas de données sensibles, car les descriptions de dépôt ne sont pas chiffrées."Docker Hub"
est la description facultative de la configuration du dépôt externe pour ce dépôt distant.DOCKER-HUB
définit le dépôt distant en amont du dépôt Docker Hub public.- USERNAME est votre nom d'utilisateur Docker Hub.
projects/PROJECT/secrets/my-secret/versions/1
correspond à la version secrète que vous avez créée pour stocker votre jeton d'accès personnel Docker Hub.Connectez-vous à gcloud CLI en tant qu'utilisateur qui exécutera les commandes Docker.
gcloud auth login
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
La commande met à jour votre configuration Docker. Vous pouvez désormais vous connecter à Artifact Registry dans votre projet Google Cloud pour stocker et extraire des images.
Connectez-vous à gcloud CLI en tant qu'utilisateur qui exécutera les commandes Docker.
gcloud auth login
Extrayez une image de Docker Hub sur votre machine et dans votre dépôt distant à l'aide de la commande suivante :
docker pull us-central1-docker.pkg.dev/PROJECT/quickstart-docker-hub-remote/busybox:latest
Où :
us-central1
est l'emplacement du dépôt distant.us-central1-docker.pkg.dev
est le nom d'hôte du dépôt Docker que vous avez créé.- PROJECT est l' Google Cloud
ID de votre projet.
Si l'ID du projet contient le signe deux-points (
:
), consultez la section Projets à l'échelle du domaine. quickstart-docker-hub-remote
est l'ID du dépôt que vous avez créé.busybox
est le nom de l'image que vous souhaitez extraire de Docker Hub versquickstart-docker-hub-remote
.latest
est la version de l'image taguée que vous souhaitez extraire de Docker Hub.
L'image est extraite sur votre machine et mise en cache dans le dépôt distant. Si vous extrayez à nouveau la même image taguée, elle sera extraite de votre dépôt distant. Vos identifiants Docker Hub sont utilisés.
Répertoriez les artefacts stockés dans votre dépôt distant :
gcloud artifacts packages list \ --location=us-central1 \ --repository=quickstart-docker-hub-remote
Le résultat se présente comme suit :
Listing items under project my-project, location us-central1, repository quickstart-docker-hub-remote. PACKAGE: busybox CREATE_TIME: 2023-06-19T18:59:09 UPDATE_TIME: 2023-06-19T18:59:10
Ouvrez la page Dépôts dans la console Google Cloud .
Dans la liste des dépôts, sélectionnez le dépôts
quickstart-docker-hub-remote
.Cliquez sur Supprimer.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
- Découvrez les différents modes de dépôt d'Artifact Registry.
- En savoir plus sur les dépôts distants Artifact Registry
- En savoir plus sur la CI/CD
Rôles requis
Pour obtenir les autorisations nécessaires pour créer un dépôt distant Docker Hub, demandez à votre administrateur de vous accorder les rôles IAM suivants :
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Choisir une interface système
Pour suivre ce guide de démarrage rapide, utilisez Cloud Shell ou votre interface système locale.
Démarrer Cloud Shell
Pour lancer Cloud Shell, procédez comme suit :
Une session Cloud Shell s'ouvre dans un cadre situé en bas de la console.
Cette interface système vous permet d'exécuter les commandes gcloud
.
Configurer une interface système locale
Pour installer gcloud CLI et Docker, procédez comme suit :
Configurer l'authentification Docker Hub
Pour éviter d'utiliser un quota Docker Hub non authentifié, nous vous recommandons de vous authentifier auprès de Docker Hub lorsque vous utilisez des dépôts distants. Les dépôts distants vous permettent d'ajouter votre nom d'utilisateur Docker Hub et un jeton d'accès personnel enregistré en tant que secret pour l'authentification auprès de Docker Hub.
Créer un jeton d'accès personnel Docker Hub
Enregistrer votre jeton d'accès personnel dans un secret
Console
CLI gcloud
gcloud secrets create my-secret --data-file="/path/to/file.txt"
Où /path/to/file.txt
correspond à l'emplacement du fichier texte contenant votre jeton d'accès personnel.
Accorder au compte de service Artifact Registry l'accès à votre secret
Console
CLI gcloud
gcloud secrets add-iam-policy-binding my-secret \ --member="serviceAccount:service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor"
Où PROJECT-NUMBER est le numéro de votre projet.
Pour trouver votre numéro de projet :
Créer un dépôt distant
Créez un dépôt distant Artifact Registry nommé quickstart-docker-hub-remote
à l'emplacement us-central1
avec vos identifiants Docker Hub en exécutant la commande suivante :
gcloud artifacts repositories create quickstart-docker-hub-remote \
--project=PROJECT_ID \
--repository-format=DOCKER \
--location=us-central1 \
--description="Remote Docker repository" \
--mode=remote-repository \
--remote-repo-config-desc="Docker Hub" \
--remote-docker-repo=DOCKER-HUB \
--remote-username=USERNAME \
--remote-password-secret-version=projects/PROJECT/secrets/my-secret/versions/1
Où :
Artifact Registry crée le dépôt et l'ajoute à la liste des dépôts.
Configurer l'authentification Docker
Avant de pouvoir transférer ou extraire des images, configurez Docker afin qu'il se serve de la Google Cloud CLI pour authentifier les requêtes envoyées à Artifact Registry.
Pour en savoir plus sur les autres méthodes d'authentification, consultez Méthodes d'authentification.
Extraire une image dans votre dépôt distant
Effectuer un nettoyage
Pour éviter que les ressources utilisées dans cette démonstration soient facturées sur votre compte Google Cloud , procédez comme suit :
Supprimer votre dépôt
Si vous souhaitez conserver votre projet et ne supprimer que la ressource de dépôt, suivez les étapes de cette section. Si vous souhaitez supprimer l'intégralité de votre projet, suivez les étapes décrites dans Supprimer votre projet.
Avant de supprimer le dépôt, assurez-vous que toutes les images que vous souhaitez conserver sont disponibles à un autre emplacement.
Pour supprimer le dépôt :
Console
gcloud
Pour supprimer le dépôt quickstart-docker-hub-remote
, exécutez la commande suivante :
gcloud artifacts repositories delete quickstart-docker-hub-remote \ --location=us-central1