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

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. Activer les API Artifact Registry, Secret Manager.

    Activer les API

  5. Installez Google Cloud CLI.
  6. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  7. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  8. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  9. Activer les API Artifact Registry, Secret Manager.

    Activer les API

  10. Installez Google Cloud CLI.
  11. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  12. Créez un compte Docker Hub.

Rôles requis

Afin d'obtenir les autorisations nécessaires pour créer un dépôt distant Docker Hub, demandez à votre administrateur de vous attribuer les rôles IAM suivants:

Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Vous pouvez également obtenir les autorisations requises via 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.

Cloud Shell
Cloud Shell est un environnement shell permettant de gérer les ressources hébergées sur Google Cloud. Docker est préinstallé avec Google Cloud CLI, l'interface de ligne de commande principale de 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.

Démarrer Cloud Shell

Pour lancer Cloud Shell, procédez comme suit :

  1. Accédez à Google Cloud Console.

    Google Cloud Console

  2. Cliquez sur le bouton Activer Cloud Shell :  .

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:

  1. Installer gcloud CLI. Pour mettre à jour une installation existante, exécutez la commande gcloud components update.

  2. Installez Docker si ce n'est pas encore fait.

  3. 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 nécessaire 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
    

    • DOMAIN est votre domaine Windows.
    • USERNAME est votre nom d'utilisateur.
  4. 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. 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.

Configurer l'authentification Docker Hub

Pour empêcher l'utilisation d'un quota Docker Hub non authentifié, nous vous recommandons de vous authentifier auprès de Docker Hub lors de l'utilisation de 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 vous authentifier auprès de Docker Hub.

Créer un jeton d'accès personnel Docker Hub

  1. Connectez-vous à Docker Hub.
  2. Créez un jeton d'accès personnel disposant d'autorisations en lecture seule.
  3. Copiez le jeton d'accès.

  4. Enregistrez le jeton d'accès dans un fichier texte en local ou dans Cloud Shell.

Enregistrer votre jeton d'accès personnel dans un secret

Console

  1. Accédez à la page Secret Manager dans la console Google Cloud.

    Accéder à la page Secret Manager

  2. Sur la page Secret Manager, cliquez sur Créer un secret.

  3. Sur la page Créer un secret, sous Nom, nommez votre secret my-secret.

  4. Dans le champ Valeur du secret, saisissez votre jeton d'accès personnel Docker Hub.

  5. Ne modifiez pas la section Régions.

  6. Cliquez sur le bouton Créer un secret.

gcloud CLI

gcloud secrets create my-secret --data-file="/path/to/file.txt"

/path/to/file.txt est 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

  1. Accédez à la page Secret Manager dans la console Google Cloud.

    Accéder à la page Secret Manager

  2. Sur la page Secret Manager, cochez la case my-secret.

  3. S'il n'est pas déjà ouvert, cliquez sur Afficher le panneau d'informations pour ouvrir celui-ci.

  4. Dans le panneau d'informations, cliquez sur Ajouter un compte principal.

  5. Dans la zone de texte Nouveaux comptes principaux, saisissez l'adresse e-mail du compte de service Artifact Registry. Le format de l'adresse e-mail du compte de service Artifact Registry est le suivant :

    service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com

    PROJECT-NUMBER est le numéro de votre projet.

    Pour trouver le numéro de votre projet:

    • Accédez à la page Tableau de bord dans la console Google Cloud.

      Accéder à la page "Tableau de bord"

    • Cliquez sur la liste déroulante de sélection du projet située en haut de la page.

    • Dans la fenêtre Sélectionner à partir de qui s'affiche, sélectionnez votre projet.

      L'ID et le numéro du projet sont affichés sur la fiche Informations sur le projet du tableau de bord du projet.

  6. Dans la liste déroulante Sélectionner un rôle, sélectionnez Gestionnaire de secrets, puis Accesseur de secrets Secret Manager.

gcloud CLI

gcloud secrets add-iam-policy-binding my-secret \
    --member="serviceAccount:service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com" \
    --role="roles/secretmanager.secretAccessor"

PROJECT-NUMBER est le numéro de votre projet.

Pour trouver le numéro de votre projet:

  • Accédez à la page Tableau de bord dans la console Google Cloud.

    Accéder à la page "Tableau de bord"

  • Cliquez sur la liste déroulante de sélection du projet située en haut de la page.

  • Dans la fenêtre Sélectionner à partir de qui s'affiche, sélectionnez votre projet.

    L'ID et le numéro du projet sont affichés sur la fiche Informations sur le projet du tableau de bord du 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ù :

  • 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 commande gcloud 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 des dépôts 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 sur le dépôt Docker Hub public en amont.
  • USERNAME est votre nom d'utilisateur Docker Hub.
  • projects/PROJECT/secrets/my-secret/versions/1 est la version du secret que vous avez créée pour stocker votre jeton d'accès personnel Docker Hub.

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 utilise la Google Cloud CLI pour authentifier les requêtes adressées à Artifact Registry.

  1. Connectez-vous à gcloud CLI en tant qu'utilisateur qui exécutera les commandes Docker.

    gcloud auth login
    
  2. 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.

Pour en savoir plus sur les autres méthodes d'authentification, consultez la section Méthodes d'authentification.

Extraire une image vers votre dépôt distant

  1. Connectez-vous à gcloud CLI en tant qu'utilisateur qui exécutera les commandes Docker.

    gcloud auth login
    
  2. Extrayez une image de Docker Hub sur votre ordinateur 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'ID de votre projet Google Cloud. 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 vers quickstart-docker-hub-remote.
    • latest est la version de l'image avec tag que vous souhaitez extraire de Docker Hub.

    L'image est extraite sur votre ordinateur 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.

  3. 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
    

Effectuer un nettoyage

Pour éviter que les ressources utilisées sur cette page soient facturées sur votre compte Google Cloud, procédez comme suit :

Supprimer votre dépôt

Si vous souhaitez conserver votre projet et uniquement supprimer la ressource de dépôt, suivez les étapes décrites dans cette section. Si vous souhaitez supprimer l'intégralité de votre projet, suivez la procédure décrite dans la section 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

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Dans la liste des dépôts, sélectionnez le dépôts quickstart-docker-hub-remote.

  3. Cliquez sur Supprimer.

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

Supprimer votre projet

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Étapes suivantes