Utiliser le miroir de Docker Hub de Container Registry

Container Registry met en miroir les images Docker Hub publiques qui font l'objet de requêtes fréquentes de la part des utilisateurs de Container Registry. Ces images sont :

  • stockées dans un dépôt appartenant à Google ;
  • davantage isolées en cas de pannes de Docker Hub ;
  • faciles à intégrer à l'écosystème Google Cloud ;
  • synchronisées avec le miroir de registre de Docker Hub : les modifications apportées par Docker Hub aux images mises en miroir sont enregistrées par le miroir de Container Registry dans un délai de 30 minutes maximum.

Vous pouvez configurer votre daemon Docker pour récupérer des images depuis le miroir de registre Docker Hub de Container Registry. Quand Container Registry est configuré en tant que miroir, voici ce qu'il se passe lorsque vous récupérez une image publique :

  • Le daemon Docker vérifie le registre Container Registry et récupère les images, si elles existent. Vous pouvez configurer plusieurs miroirs. Ainsi, vous avez également la possibilité de disposer de votre propre miroir local. Le daemon Docker vérifie alors chaque miroir configuré jusqu'à ce qu'il y trouve l'image.
  • S'il ne trouve pas l'image, le daemon Docker la récupère depuis le dépôt canonique sur Docker Hub.
  • Container Registry ajoute au miroir les images qui font l'objet de requêtes fréquentes, de sorte qu'elles soient disponibles pour les requêtes ultérieures.

Le miroir de Container Registry est un cache qui met en miroir les images pour lesquelles il reçoit des requêtes. Container Registry supprime périodiquement les images qui ne sont plus demandées.

Récupérer des images depuis le miroir de Container Registry

Pour configurer votre daemon Docker afin qu'il récupère les images depuis le miroir de Container Registry, suivez les instructions ci-dessous.

CLI

  1. Configurez le daemon de l'une des trois manières suivantes :

    • Pour configurer automatiquement le daemon Docker au démarrage, définissez la valeur suivante dans /etc/docker/daemon.json :

      {
            "registry-mirrors": ["https://mirror.gcr.io"]
          }
          
    • Ou bien, lorsque vous démarrez le daemon, transmettez le nom d'hôte Container Registry :

      dockerd --registry-mirror=https://mirror.gcr.io
          
    • Vous pouvez également ajouter la ligne suivante à votre fichier /etc/default/docker :

      DOCKER_OPTS="${DOCKER_OPTS} --registry-mirror=https://mirror.gcr.io"
          
  2. Selon la plate-forme que vous utilisez, exécutez l'une des commandes suivantes pour redémarrer le daemon Docker :

    sudo restart docker
        sudo service docker stop && sudo service docker start
        docker-machine restart
        

Interface utilisateur Docker

  1. Ouvrez le menu Preferences (Préférences) de Docker.
  2. Cliquez sur Daemon.
  3. Cliquez sur Avancé. Dans le champ JSON, ajoutez une clé registry-mirrors ayant comme valeur http://mirror.gcr.io :

    {
          "registry-mirrors" : [
            "http://mirror.gcr.io"
          ]
        }
        
  4. Cliquez sur Apply & Restart (Appliquer et redémarrer).

Pour vous assurer que le miroir est désormais configuré, exécutez la commande :

docker system info
    

Le résultat doit inclure les miroirs Registry Mirrors et ressembler à ce qui suit :

  Containers: 2
       Running: 0
       Paused: 0
       Stopped: 2
      Images: 2
      Server Version: 17.03.1-ce
      Storage Driver: overlay2
       Backing Filesystem: extfs
       Supports d_type: true
       Native Overlay Diff: true
      Logging Driver: json-file
      ...
      Registry Mirrors:
       http://mirror.gcr.io
    

Désormais, toutes les commandes docker pull permettant d'extraire des images Docker Hub feront d'abord l'objet d'une requête à partir du miroir de Container Registry.

Afficher la liste des images mises en miroir

Vous pouvez afficher la liste des dépôts ainsi que la liste des tags et des condensés dans un dépôt spécifique.

  • Pour afficher la liste des dépôts figurant dans le miroir de Container Registry, exécutez cette commande :

    gcloud container images list --repository=mirror.gcr.io
        

    Cette commande affiche la liste des dépôts se trouvant directement sous mirror.gcr.io. Certains de ces dépôts sont imbriqués. Par exemple, mirror.gcr.io/library contient plusieurs dépôts imbriqués.

    Vous pouvez afficher la liste des dépôts imbriqués en utilisant la commande suivante :

    gcloud container images list --repository=[REPO]
        

    [REPO] est un dépôt sous mirror.gcr.io, par exemple mirror.gcr.io/library.

    Cette commande affiche la liste des dépôts se trouvant directement sous le dépôt que vous avez spécifié.

  • Pour afficher les tags et les condensés dans l'un de ces dépôts, utilisez la commande suivante :

    gcloud container images list --repository=mirror.gcr.io/[REPO]
        

    [REPO] est l'un des dépôts imbriqués sous mirror.gcr.io.

Étapes suivantes