Comment rechercher des images à partir du registre privé 1.0 dans docker?

J’ai fait un registre privé, curl xx.xx.xx.xx: 5000 est ok. Je pousse une image dans le registre privé de docker push xx.xx.xx.xx:5000/centos : docker push xx.xx.xx.xx:5000/centos
il retourne:
http://xx.xx.xx.xx:5000/v1/repositories/centos/tags/latest

la question est de savoir comment obtenir toutes les images du registre web ou de la commande quel qu’il soit. Je ne peux trouver aucune information de l’API de registre de docker. n’importe qui aide? 🙂

A partir de la version 0.7.0 du registre privé, vous pouvez faire:

 $ curl -X GET http://localhost:5000/v1/search?q=postgresql 

et vous obtiendrez une charge utile json:

 {"num_results": 1, "query": "postgresql", "results": [{"description": "", "name": "library/postgresql"}]} 

pour donner plus de contexte, voici comment j’ai démarré mon registre:

 docker run \ -e SETTINGS_FLAVOR=local \ -e STORAGE_PATH=/registry \ -e SEARCH_BACKEND=sqlalchemy \ -e LOGLEVEL=DEBUG \ -p 5000:5000 \ registry 

Maintenant, depuis le client docker, vous pouvez simplement rechercher directement dans votre registre privé sans utiliser les API HTTP ou des outils supplémentaires:

par exemple, recherche de centos image:

docker search localhost:5000/centos

Donc, je sais que c’est un domaine qui change rapidement mais (à partir du 2015-09-08), j’ai trouvé ce qui suit dans l’ API HTTP V2 du registre Docker :

Liste des repositorys ( lien )

 GET /v2/_catalog 

Liste des tags d’image ( lien )

 GET /v2//tags/list 

Sur la base de ce qui suit a fonctionné pour moi sur un registre local (registre: 2 IMAGE ID 1e847b14150e365a95d76a9cc6b71cd67ca89905e3a0400fa44381ecf00890e1 créé le 2015-08-25T07: 55: 17.072):

 $ curl -X GET http://localhost:5000/v2/_catalog {"repositories":["ubuntu"]} $ curl -X GET http://localhost:5000/v2/ubuntu/tags/list {"name":"ubuntu","tags":["latest"]} 

Il n’y a actuellement aucun support de recherche pour Docker Registry v2 .

Il y avait un fil de discussion sur le sujet depuis longtemps . Le plan actuel est de prendre en charge la recherche avec une extension à la fin, qui devrait être prête par la version 2.1 .

Pour contourner le problème , exécutez les opérations suivantes sur l’ordinateur sur lequel votre registre v2 s’exécute:

 > docker exec -it  bash > ls /var/lib/registry/docker/registry/v2/repositories/ 

Les images sont dans des sous-répertoires correspondant à leur espace de noms, par exemple jwilder/nginx-proxy

A été en mesure de tout récupérer dans mon registre privé en recherchant simplement «bibliothèque»:

 docker search [my.registry.host]:[port]/library 

Retourne (par exemple):

 NAME DESCRIPTION STARS OFFICIAL AUTOMATED library/custom-image 0 library/another-image 0 library/hello-world 0 

J’ai installé le projet atc- / docker-registry-web qui me donne l’interface utilisateur et recherche mon registre privé. https://github.com/atc-/docker-registry-web

Il est désamorcé et vous pouvez simplement l’exécuter par

 exécutable sur le docker -p 8080: 8080 -e REG1 = http: //registry_host.name: 5000 / v1 / atcol / docker-registry-ui

et passer en revue le contenu en naviguant à registry_ui_host.name:8080

Actuellement, il n’existe pas de moyen simple de le faire car ces informations doivent être stockées par index, ce que le registre privé n’a pas. Mais selon la façon dont vous avez démarré le registre, vous avez deux options:

  1. Si vous avez démarré le registre sans -v pour stocker des données dans un dossier hôte distinct, vous pouvez essayer avec docker diff avec ceci vous devriez obtenir des informations sur les changements dans le conteneur fs. Toutes les images poussées doivent se trouver quelque part dans / tmp / registry / repositories /
  2. si vous avez commencé à enregistrer avec -v, vérifiez simplement le contenu du répertoire monté sur l’hôte

Si vous avez utilisé “centos” comme nom, cela devrait être dans / tmp / registry / repositories / library / centos. Ce dossier contiendra des fichiers texte décrivant la structure de l’image. Les données réelles se trouvent dans / tmp / registry / images /.

Liste toutes les images

 docker search :/ 

Listez des images comme ‘vcs’

 docker search :/vcs 

Une autre méthode, une ligne (remplacez votre chemin / ports réels si nécessaire). Exemple: suppose un registre générique: 2.0 Démarrage Le conteneur de registre en cours d’exécution contient un fichier journal contenant les noms des images et des balises. J’extrapole les données comme ceci:

grep -r -o “vars.name =. * vars.reference =. ” / var / lib / docker / containers / | couper -c 167-225 | sed ‘s / ver. * $ //’ | sed ‘s / vars.name = //’ | sed ‘s / vars.reference = /: /’ | sortinger -u

vous devrez peut-être modifier les valeurs de coupe pour obtenir le résultat souhaité.