Любой проект API или веб-интерфейса для управления частным реестром Docker?

Я не могу найти, как управлять изображениями в частном реестре. Я могу нажать или вытащить изображение, потому что я знаю идентификатор, но как получить список нажатых изображений?

Возьмите, например, человека, который хочет видеть доступные изображения в частном реестре своей организации. Как она может это сделать?

Если я ошибаюсь, я не могу найти API или веб-интерфейс, чтобы обнаружить содержимое реестра, например index.docker.io, с помощью публичного реестра.

Есть ли какие-либо проекты с открытым исходным кодом для управления этим?

спасибо.

Ответ 1

Спасибо Томасу!

Чтобы разрешить использование API поиска, вы должны запустить контейнер, указав значение переменной среды SEARCH_BACKEND следующим образом:

docker run -d -e SEARCH_BACKEND=sqlalchemy -p 5000:5000 --name registry samalba/docker-registry

Тогда у меня есть результат для этого запроса:

GET http://registry_host:5000/v1/search?q=base

Result :
{ 
   "num_results": 1, 
   "query": "base", 
   "results": [{"description": "", "name": "test/base-img"}]
}

Чтобы перечислить все изображения, вы можете сделать это:

GET http://registry_host:5000/v1/search

Result :
{ 
   "num_results": 2, 
   "query": "", 
   "results": [
       {"description": "", "name": "test/base-img"},
       {"description": "", "name": "test/base-test"}]
}

И знать доступные версии изображения:

GET http://localhost:5000/v1/repositories/**test/base-img**/tags

Result :
{
  "0.1": "04e073e1efd31f50011dcde9b9f4d3148ecc4da94c0b7ba9abfadef5a8522d13",
  "0.2": "04e073e1efd31f50011dcde9b9f4d3148ecc4da94c0b7ba9abfadef5a8522d13",
  "0.3": "04e073e1efd31f50011dcde9b9f4d3148ecc4da94c0b7ba9abfadef5a8522d13"
}

Ответ 2

Есть ли какие-либо проекты с открытым исходным кодом для управления этим?

Существует контейнерное веб-приложение, которое обеспечивает администрирование индивидуальных личных реестров "один-ко-многим". Его имя - Docker Registry UI, и это FOSS.

Источник находится в Github, и вы можете запустить его в контейнере следующим образом:

docker run -p 8080:8080 -v my_data_dir:/var/lib/h2/ atcol/docker-registry-ui

Отказ от ответственности: я написал веб-приложение, так как не мог найти его сам. Я считаю, что это отвечает на ваш вопрос (как указано).

Ответ 3

Я написал docker-registry-frontend, который вы можете найти в github. Он позволяет просматривать ваш частный реестр и делать почти все, что доступно через API-интерфейс Docker registry v1. Кроме того, он может запускаться как контейнер докеров самостоятельно.

Вот список основных функций с некоторыми скриншотами: https://github.com/kwk/docker-registry-frontend/wiki/Features. В дополнение к этим функциям поддерживаются SSL-шифрование и аутентификация Kerberos.

Ответ 4

Я хочу представить вам, мой frontend для частного реестра, вы можете попробовать его из github или dockerhub. Также вы можете найти скриншоты интерфейса.

Подводя итог, он:
- внутренний db (BoltBD) дает ему возможность хранить информацию, и в результате он реагирует гораздо быстрее, чем после прямого вызова api, как в других проектах
- приложение может обрабатывать, хранить и показывать информацию из реестра, например:
- информация о слоях изображений:
- имя/тег
- размер изображения и число нажатий
- загрузить и установить даты
- история создания созданий изображений
- можно установить несколько репозиториев, если у вас есть несколько реестров и наблюдайте их в одном месте
- показать статистику довольно, рисовать кривые для количества загрузок и размеров изображений для тега с учетом дат


Обновление 2017-02-15
До сих пор также было добавлено:

  • найти родителя
  • показать дерево-график родителей
  • удаление изображения
  • Поддержка указателя токена носителя

Ответ 5

Насколько я понимаю, в реестре Docker есть REST API, очень похожий на сам Docker. Документацию можно найти в http://docs.docker.io/reference/api/registry_api/. Но на первый взгляд я не вижу метода, чтобы просто перечислить все изображения.

Существует также REST API для официального индекса (информация в http://docs.docker.io/reference/api/docker-io_api/).

ИЗМЕНИТЬ

Я только что протестировал API-интерфейс Docker, и это не так понятно. Вы можете запросить все изображения определенного репозитория. В моем случае мой репозиторий называется "thomas/busybox". Я могу запросить все изображения там, позвонив:

https://my-private-registry.com/v1/repositories/thomas/busybox/images

Result:

[
  {
    "id": "2d8e5b282c81244037eb15b2068e1c46319c1a42b80493acb128da24b2090739"
  },
  {
    "id": "6c991eb934609424f761d3d0a7c79f4f72b76db286aa02e617659ac116aa7758"
  },
  {
    "id": "9f4e93171ec525221fa9013d0e21f8690cef68590664eb5249e0b324c5faf31a"
  },
  {
    "id": "511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158"
  }
]

Теперь я знаю, что у меня есть четыре изображения в моем репозитории, и я могу запросить каждое изображение. Запрос для первого изображения:

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
}

Вы также можете искать изображение, но я не получаю никаких результатов:

https://my-private-registry.com/v1/search?q=thomas

Result:

{"num_results": 0, "query": "thomas", "results": []}