J'utilise Docker Registry v1 et je souhaite migrer vers la nouvelle version, v2. Mais j'ai besoin d'un moyen d'obtenir une liste d'images présentes sur le registre; par exemple avec le registre v1, je peux exécuter une requête GET http://myregistry:5000/v1/search?
et le résultat est:
{
"num_results": 2,
"query": "",
"results": [
{
"description": "",
"name": "deis/router"
},
{
"description": "",
"name": "deis/database"
}
]
}
Mais je ne peux pas trouver sur la documentation officielle quelque chose de similaire pour obtenir une liste d'images dans le registre. Quelqu'un connaît un moyen de le faire sur la nouvelle version v2?
docker
docker-registry
kikicarbonell
la source
la source
Réponses:
Pour la dernière version (à partir du 31/07/2015) de Registry V2, vous pouvez obtenir cette image à partir de DockerHub:
Liste de tous les référentiels (en fait des images):
Liste toutes les balises d'un référentiel:
la source
http://<registry-url>/v2/_catalog?n=<count>
avec count par exemple 2000.curl -u <user>:<pass> -X GET ...
vous pouvez rechercher sur
la source
Obtenir des catalogues
Par défaut, l'API de registre retourne 100 entrées de catalogue, il y a le code :
Lorsque vous courbez l'API du Registre:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
il équivaut à:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=100
Il s'agit d'un méthond de pagination.
Lorsque la somme des entrées dépasse 100, vous pouvez procéder de deux manières:
Premièrement : donner un plus grand nombre
curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=2000
Sencond : analyser la prochaine URL de l'éditeur de liens
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
Un élément de lien contenu dans l'en-tête de réponse:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
en-tête de réponse:
Link: </v2/_catalog?last=pro-octopus-ws&n=100>; rel="next"
L'élément de lien a la dernière entrée de cette demande, alors vous pouvez demander la «page» suivante:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog?last=pro-octopus-ws
Si l'en-tête de réponse contient un élément de lien , vous pouvez le faire en boucle .
Obtenez des images
Lorsque vous obtenez le résultat du catalogue, il ressemble à ceci:
{ "repositories": [ "busybox", "ceph/mds" ] }
vous pouvez obtenir les images dans chaque catalogue:
curl --cacert domain.crt https://your.registry:5000/v2/busybox/tags/list
Retour:
{"name":"busybox","tags":["latest"]}
la source
ceph/mds
? en général, pour tout référentiel défini avec/
-/v2/_catalog/ceph/mdt/tags/list
ne fonctionne pasLa dernière version de Docker Registry disponible sur https://github.com/docker/distribution prend en charge l'API de catalogue. (v2 / _catalog). Cela permet de rechercher des référentiels
Si vous êtes intéressé, vous pouvez essayer l'interface CLI de registre d'images Docker que j'ai construite pour faciliter l'utilisation des fonctionnalités de recherche dans la nouvelle distribution Docker Registry ( https://github.com/vivekjuneja/docker_registry_cli )
la source
Nous avons écrit un outil CLI à cet effet: docker-ls Il vous permet de parcourir un registre de docker et prend en charge l'authentification via un jeton ou une authentification de base.
la source
Cela m'a rendu fou, mais j'ai finalement rassemblé toutes les pièces. Depuis le 25/01/2015, j'ai confirmé qu'il était possible de lister les images dans le registre docker V2 (exactement comme mentionné @jonatan ci-dessus.)
Je voterais pour cette réponse, si j'avais le représentant.
Au lieu de cela, je vais développer la réponse. Étant donné que le registre V2 est conçu pour la sécurité, je pense qu'il est approprié d'inclure la façon de le configurer avec un certificat auto-signé et d' exécuter le conteneur avec ce certificat afin qu'un appel https puisse lui être effectué avec ce certificat:
Voici le script que j'utilise pour démarrer le registre:
Cela peut être évident pour certains, mais je me mélange toujours avec des clés et des certificats. Le fichier qui doit être référencé pour faire l'appel @jonaton mentionne ci-dessus **, est le domain.crt répertorié ci-dessus. (Depuis que j'ai mis domain.crt dedans
/root
, j'ai fait une copie dans le répertoire utilisateur où il était accessible.)** La commande ci-dessus a été modifiée: -X GET ne fonctionnait pas vraiment quand je l'ai essayé.
Remarque:
https://myregistry:5000
(comme ci-dessus) doit correspondre au domaine donné au certificat généré.la source
Installer le registre: 2.1.1 ou ultérieur (vous pouvez vérifier le dernier, ici ) et utilisez GET / v2 / _catalog pour obtenir la liste.
https://github.com/docker/distribution/blob/master/docs/spec/api.md#listing-repositories
Listez toutes les images par exemple de script Shell: https://gist.github.com/OndrejP/a2386d08e5308b0776c0
la source
Voici un joli petit liner (utilise JQ) pour imprimer une liste des Repos et des tags associés.
Si vous ne l'avez pas
jq
installé, vous pouvez utiliser:brew install jq
la source
J'ai dû faire la même chose ici et les travaux ci-dessus, sauf que je devais fournir des informations de connexion car il s'agissait d'un référentiel de docker local.
C'est comme ci-dessus mais en fournissant le nom d'utilisateur / mot de passe dans l'URL.
Il revient en tant que JSON non formaté.
Je l'ai passé à travers le formateur python pour faciliter la lecture humaine, au cas où vous voudriez l'avoir dans ce format.
la source
En utilisant les points de terminaison "/ v2 / _catalog" et "/ tags / list", vous ne pouvez pas vraiment lister toutes les images. Si vous avez poussé quelques images différentes et les avez étiquetées "dernières", vous ne pouvez pas vraiment lister les anciennes images! Vous pouvez toujours les extraire si vous vous y référez en utilisant le résumé "docker pull ubuntu @ sha256: ac13c5d2 ...". Donc, la réponse est - il n'y a aucun moyen de lister les images, vous ne pouvez lister que les tags qui ne sont pas les mêmes
la source
Si certains arrivent jusque-là.
Prenant ce que d'autres ont déjà dit ci-dessus. Voici un one-liner qui met la réponse dans un fichier texte formaté, json.
Cela ressemble à
Vous devrez peut-être modifier le `? N = xxxx 'pour qu'il corresponde au nombre de conteneurs dont vous disposez.
Ensuite, vous pouvez supprimer automatiquement les conteneurs anciens et inutilisés.
la source
La fonctionnalité Docker Search Registry v2 n'est actuellement pas prise en charge au moment d'écrire ces lignes. Voir la discussion depuis février 2015: «proposer la fonctionnalité de recherche de registre # 206» https://github.com/docker/distribution/issues/206
J'ai écrit un script que vous pouvez trouver: https://github.com/BradleyA/Search-docker-registry-v2-script.1.0 Ce n'est pas joli mais il obtient les informations nécessaires du registre privé.
la source
J'ai écrit un outil en ligne de commande facile à utiliser pour lister les images de différentes manières (comme lister toutes les images, lister toutes les balises de ces images, lister toutes les couches de ces balises).
Il vous permet également de supprimer des images inutilisées de diverses manières, comme supprimer uniquement les anciennes balises d'une seule image ou de toutes les images, etc.
Il est écrit en python et n'a pas besoin de vous pour télécharger de grosses images de registre personnalisées volumineuses.
la source
Voici un exemple qui répertorie toutes les balises de toutes les images du registre. Il gère également un registre configuré pour l'authentification HTTP de base.
Explication:
la source
Ces discussions remontent à longtemps, les outils les plus récents que l'on devrait considérer sont
skopeo
etcrane
.skopeo
prend en charge la signature et possède de nombreuses autres fonctionnalités, tout encrane
étant un peu plus minimaliste et j'ai trouvé plus facile à intégrer dans un script shell simple.la source
Étant donné que chaque registre s'exécute en tant que conteneur, l'ID du conteneur a un fichier journal associé ID-json.log, ce fichier journal contient les vars.name = [image] et vars.reference = [tag]. Un script peut être utilisé pour extrapoler et imprimer ces derniers. Il s'agit peut-être d'une méthode pour répertorier les images transmises au registre V2-2.0.1.
la source