Je ne trouve pas comment gérer les images dans un registre privé. Je peux pousser ou extraire une image parce que je connais l'identifiant, mais comment obtenir la liste des images envoyées?
Prenons l'exemple d'une personne qui souhaite voir les images disponibles sous le registre privé de son organisation. Comment peut-elle faire?
Sauf erreur de ma part, je ne trouve pas d'API ou d'UI Web pour découvrir le contenu du registre comme le fait le fichier index.docker.io avec le registre public.
Existe-t-il des projets open source pour gérer cela?
merci.
Merci Thomas!
Pour autoriser l'utilisation de l'API de recherche, vous devez démarrer le conteneur en spécifiant la valeur de la variable d'environnement SEARCH_BACKEND comme suit:
docker run -d -e SEARCH_BACKEND=sqlalchemy -p 5000:5000 --name registry samalba/docker-registry
Ensuite, j'ai un résultat pour cette requête:
GET http://registry_Host:5000/v1/search?q=base
Result :
{
"num_results": 1,
"query": "base",
"results": [{"description": "", "name": "test/base-img"}]
}
Pour lister toutes les images, vous pouvez faire ceci:
GET http://registry_Host:5000/v1/search
Result :
{
"num_results": 2,
"query": "",
"results": [
{"description": "", "name": "test/base-img"},
{"description": "", "name": "test/base-test"}]
}
Et pour connaître les versions disponibles d'une image:
GET http://localhost:5000/v1/repositories/**test/base-img**/tags
Result :
{
"0.1": "04e073e1efd31f50011dcde9b9f4d3148ecc4da94c0b7ba9abfadef5a8522d13",
"0.2": "04e073e1efd31f50011dcde9b9f4d3148ecc4da94c0b7ba9abfadef5a8522d13",
"0.3": "04e073e1efd31f50011dcde9b9f4d3148ecc4da94c0b7ba9abfadef5a8522d13"
}
Existe-t-il des projets open source pour gérer cela?
Il existe une application Web conteneurisée qui permet d’administrer des registres privés un à plusieurs. Son nom est Docker Registry UI et FOSS.
Le source est sur Github et vous pouvez l'exécuter dans un conteneur comme ceci:
docker run -p 8080:8080 -v my_data_dir:/var/lib/h2/ atcol/docker-registry-ui
Déni de responsabilité: J'ai écrit l'application Web, car je ne pouvais pas en trouver une moi-même. Je crois que cela répond à votre question (telle que citée).
J'ai écrit un docker-registry-frontend que vous pouvez trouver sur github. Il vous permet de parcourir votre registre privé et de faire presque tout ce qui est disponible via l’API de registre Docker v1. De plus, il peut être exécuté comme un conteneur docker seul.
Voici une liste des fonctionnalités de base avec quelques captures d'écran: https://github.com/kwk/docker-registry-frontend/wiki/Features . Outre ces fonctionnalités, le cryptage SSL et l'authentification Kerberos sont pris en charge.
Je veux vous présenter mon interface de registre privé , vous pouvez l’essayer depuis github ou dockerhub . Vous pouvez également y trouver des captures d’écran d’interface.
En résumé, il a:
- internal db (BoltBD) lui donne la possibilité de stocker des informations et, par conséquent, il répond beaucoup plus rapidement qu'après un appel api direct, comme dans d'autres projets
- app peut analyser, stocker et afficher les informations du registre telles que:
- informations sur les couches d'image:
- nom/tag
- taille de l'image et nombre de push
- dates de téléchargement et de diffusion
- historique des commandes de création d'images
- il est possible de définir plusieurs référentiels au cas où vous auriez plusieurs registres et de les observer au même endroit
- afficher les statistiques, dessiner des courbes pour le nombre de téléchargements et la taille des images pour les balises par rapport aux dates
Mise à jour 2017-02-15
Jusque là aussi, on a ajouté:
Autant que je sache, le registre Docker a une API REST très similaire à Docker elle-même. Vous pouvez trouver la documentation sur http://docs.docker.io/reference/api/registry_api/ . Mais à première vue, je ne vois pas de méthode pour répertorier toutes les images.
Il existe également une API REST pour l'index officiel (infos à http://docs.docker.io/reference/api/docker-io_api/ ).
Je viens de tester l'API de registre Docker et ce n'est pas si explicite. Vous pouvez interroger toutes les images d'un référentiel donné. Dans mon cas, mon référentiel s'appelle "thomas/busybox". Je peux interroger toutes les images ici en appelant:
https://my-private-registry.com/v1/repositories/thomas/busybox/images
Result:
[
{
"id": "2d8e5b282c81244037eb15b2068e1c46319c1a42b80493acb128da24b2090739"
},
{
"id": "6c991eb934609424f761d3d0a7c79f4f72b76db286aa02e617659ac116aa7758"
},
{
"id": "9f4e93171ec525221fa9013d0e21f8690cef68590664eb5249e0b324c5faf31a"
},
{
"id": "511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158"
}
]
Maintenant, je sais que j'ai quatre images dans mon référentiel et que je peux interroger chaque image. La requête pour la première image serait:
https://my-private-registry.com/v1/images/2d8e5b282c81244037eb15b2068e1c46319c1a42b80493acb128da24b2090739/json
Result:
{
"id": "2d8e5b282c81244037eb15b2068e1c46319c1a42b80493acb128da24b2090739",
"parent": "9f4e93171ec525221fa9013d0e21f8690cef68590664eb5249e0b324c5faf31a",
"created": "2014-04-24T15:59:59.47081913Z",
"container": "d15320d6935ca35bc4198e373f29e730f4c53cce32b3809c2fecec22eb30018b",
"container_config": {
"Hostname": "4964db5b599b",
...
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"HOME=\/",
"PATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin"
],
"Cmd": [
"\/bin\/sh",
"-c",
"#(nop) CMD [\/bin\/sh -c \/bin\/sh]"
],
"Image": "9f4e93171ec525221fa9013d0e21f8690cef68590664eb5249e0b324c5faf31a",
...
"OnBuild": [
]
},
"docker_version": "0.10.0",
"author": "J\u00c3\u00a9r\u00c3\u00b4me Petazzoni <[email protected]>",
"config": {
"Hostname": "4964db5b599b",
"Domainname": "",
"User": "",
"Memory": 0,
...
"Env": [
"HOME=\/",
"PATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin"
],
"Cmd": [
"\/bin\/sh",
"-c",
"\/bin\/sh"
],
"Image": "9f4e93171ec525221fa9013d0e21f8690cef68590664eb5249e0b324c5faf31a",
...
"OnBuild": [
]
},
"architecture": "AMD64",
"os": "linux",
"Size": 0
}
Vous pouvez également rechercher une image, mais je n’obtiens aucun résultat:
https://my-private-registry.com/v1/search?q=thomas
Result:
{"num_results": 0, "query": "thomas", "results": []}
Sonatype Nexus Repository Manager 3.0 a Registre privé pour Docker