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.

30
demandé sur Larry Cai 2014-05-16 20:03:12

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

15
répondu Alex 2015-07-27 00:05:27

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"
}
12
répondu bwilcox 2014-05-20 12:57:56

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.

11
répondu Konrad Kleine 2015-02-04 10:36:06

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
4
répondu Evedel 2017-02-15 00:19:12

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": []}
1
répondu Thomas Uhrig 2014-05-17 12:00:03

Sonatype Nexus Repository Manager 3.0 A registre privé pour Docker

0
répondu Praneeth 2016-06-08 20:18:48