Tout projet API ou interface Web pour gérer un registre privé Docker?
Je ne trouve pas comment gérer les images dans un registre privé. Je peux pousser ou tirer une image parce que je connais l'id mais comment obtenir la liste des images poussées ?
Prenons par exemple une personne qui veut voir les images disponibles dans le registre privé de son organisation. Comment peut-elle faire ?
Sauf erreur, je ne trouve pas D'API ou D'interface Web pour découvrir le contenu du Registre comme le index.docker.io faites avec le registre public.
Existe-t-il des projets open source à gérer cela ?
Merci.
6 réponses
Existe-t-il des projets open source pour gérer cela ?
Il existe une application web conteneurisée qui fournit l'administration de registres privés un à plusieurs. Son nom est Docker Registry UI et il est FOSS.
Le source sur Github et vous pouvez l'exécuter dans un conteneur comme ça:
docker run -p 8080:8080 -v my_data_dir:/var/lib/h2/ atcol/docker-registry-ui
Avertissement: 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 (comme cité).
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 ceci:
docker run -d -e SEARCH_BACKEND=sqlalchemy -p 5000:5000 --name registry samalba/docker-registry
, Puis 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 de 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"
}
J'ai écrit un docker-registre-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 Docker registry V1. De plus, il peut être exécuté seul en tant que conteneur docker.
Voici une liste des fonctionnalités de base avec quelques captures d'écran: https://github.com/kwk/docker-registry-frontend/wiki/Features . en plus de ces fonctionnalités, il existe un support pour le cryptage SSL et Kerberos Authentication.
Je veux vous présenter, mon frontend pour le registre privé , Vous pouvez l'essayer à partir de GitHub ou dockerhub. Vous pouvez également trouver des captures d'écran d'interface là-bas.
Pour résumer, il a:
- la base de données interne (BoltBD) lui donne la capacité de stocker des informations, et par conséquent, elle répond beaucoup plus rapidement qu'après un appel api direct comme dans d'autres projets
l'application peut pars, stocker et afficher des informations à partir du registre tels que:
- informations sur les calques d'image:
- Nom / Étiquette
- la taille de l'image et pousse nombre
- télécharger et push dates
- historique des commandes de création d'images
- il est possible de définir plusieurs référentiels dans le cas où vous avez plus d'un registre et de les observer au même endroit
- afficher les statistiques assez, dessiner des courbes pour le nombre de téléchargements et les tailles d'image pour la balise en ce qui concerne les dates
Mise à jour 2017-02-15
Jusqu'à présent, il a également été ajouté:
- trouver un parent
- afficher l'arborescence des parents
- suppression de l'image
- support D'authentification du jeton porteur
Pour autant que je vois, le registre Docker a une API REST, très similaire à Docker lui-même. Vous pouvez trouver la documentation à http://docs.docker.io/reference/api/registry_api / . mais au premier coup d'œil, Je ne vois pas de méthode pour simplement lister toutes les images.
Il y a aussi une API REST pour l'index officiel (infos à http://docs.docker.io/reference/api/docker-io_api/).
Modifier
Je viens de tester L'API Docker registry et ce n'est pas si explicite. Vous pouvez interroger toutes les images d'un certain référentiel. Dans mon cas, mon référentiel s'appelle "thomas / busybox". Je peux interroger toutes les images 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 je peux interroger chaque image. La requête pour la première image:
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 <jerome@docker.com>",
"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