J'ai créé un registre privé, curl xx.xx.xx.xx: 5000 is ok . I Insérez une image dans le registre privé de docker en effectuant: 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 commander quoi que ce soit . Je ne peux pas trouver aucune information de Docker Registry API . Quelqu'un aide? :)
À partir de la version 0.7.0 du registre privé , vous pouvez effectuer les opérations suivantes:
$ curl -X GET http://localhost:5000/v1/search?q=postgresql
et vous obtiendrez une charge JSON:
{"num_results": 1, "query": "postgresql", "results": [{"description": "", "name": "library/postgresql"}]}
pour donner plus de fond, voici comment j'ai commencé mon registre:
docker run \
-e SETTINGS_FLAVOR=local \
-e STORAGE_PATH=/registry \
-e SEARCH_BACKEND=sqlalchemy \
-e LOGLEVEL=DEBUG \
-p 5000:5000 \
registry
Désormais, à partir du client docker, vous pouvez simplement effectuer une recherche directe dans votre registre privé sans utiliser les API HTTP ou des outils supplémentaires:
par exemple. rechercher une image centos:
docker search localhost:5000/centos
Donc, je sais que le domaine évolue rapidement, mais (à compter du 2015-09-08), j'ai trouvé ce qui suit dans le API HTTP Docker Registry V2 :
GET /v2/_catalog
GET /v2/<name>/tags/list
D'après ce qui suit, les éléments suivants ont 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"]}
Actuellement, il y a pas de support de recherche pour Docker Registry v2}.
Il y avait un fil de longue durée sur le sujet . Le plan actuel est de supporter la recherche avec un extension à la fin, qui devrait être prêt pour v2.1 .
En tant que solution de contournement, exécutez la procédure suivante sur la machine sur laquelle votre registre v2 est en cours d'exécution:
> docker exec -it <your_registry_container_id> bash
> ls /var/lib/registry/docker/registry/v2/repositories/
Les images se trouvent dans des sous-répertoires correspondant à leur espace de noms, par exemple. jwilder/nginx-proxy
A pu tout récupérer dans mon registre privé en cherchant simplement 'bibliothèque':
docker search [my.registry.Host]:[port]/library
Retours (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 fournit l'interface utilisateur et recherche mon registre privé . https://github.com/atc-/docker-registry-web
Il est dockerisé et vous pouvez simplement l'exécuter par
docker run -p 8080: 8080 -e REG1 = http: //registry_Host.name: 5000/v1/atcol/docker-registry-ui
et réviser le contenu en naviguant sur registry_ui_Host.name:8080
Actuellement, autant que je sache, il n’ya pas de moyen facile 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 commencé le registre, vous avez 2 options:
docker diff <id_of_registry_container>
avec ceci. Vous devriez obtenir des informations sur les modifications apportées au conteneur fs. Toutes les images envoyées doivent se trouver quelque part dans/tmp/registry/repositories /Si vous avez utilisé "centos" comme nom, il devrait se trouver dans/tmp/registry/repositories/library/centos. Ce dossier contiendra des fichiers texte décrivant la structure de l’image. Les données réelles sont dans/tmp/registry/images /.
Lister toutes les images
docker search <registry_Host>:<registry_port>/
Liste les images du style 'vcs'
docker search <registry_Host>:<registry_port>/vcs
Une autre méthode une ligne (remplacez votre chemin/vos ports actuels si nécessaire). Exemple: suppose un registre générique: Démarrage 2.0 Le conteneur de registre en cours d'exécution contient un fichier journal contenant les noms d'image et de balise. J'extrapole les données comme ceci:
grep -r -o "vars.name =. * vars.reference =."/var/lib/docker/containers/| coupé -c 167-225 | sed 's/ver. * $ //' | sed 's/vars.name = //' | sed 's/vars.reference = /: /' | trier -u
vous devrez peut-être modifier les valeurs de coupe pour obtenir le résultat souhaité.
Modification de la réponse de @mre pour obtenir la liste uniquement à partir d'une commande (valide au moins pour Docker Registry v2)
docker exec -it ls -a/var/lib/registry/docker/registry/v2/repositories /