web-dev-qa-db-fra.com

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

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? :)

71
edwardsbean

À 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
70
faide

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

83
iTech

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 :

Référencement des référentiels ( link )

GET /v2/_catalog

Liste des balises d'image ( link )

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"]}
65
snth

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

15
mre

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
12

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

6
Larisa Sabban

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:

  1. si vous avez démarré le registre sans -v pour stocker les données dans un dossier hôte séparé, vous pouvez essayer avec 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 /
  2. si vous avez démarré le registre avec -v, vérifiez simplement le contenu du répertoire monté sur l'hôte

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

3
odk

Lister toutes les images

docker search <registry_Host>:<registry_port>/

Liste les images du style 'vcs'

docker search <registry_Host>:<registry_port>/vcs
3
smishra

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

0
Phil Pinkerton

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 /

0
user9269906