Docker SDK с реестром контейнера Google - PullRequest
2 голосов
/ 27 апреля 2020

Мы хотим запросить gcr.io, используя Python. Тем не менее, на момент написания статьи ни одно из перечисленных ниже невозможно:

  • Docker SDK: client.images.list() содержит только локальные изображения
  • нет библиотеки клиента Google для GCR
  • изображения хранятся в GCS, но в виде одного большого списка дайджестов без метаданных. Невозможно сказать, что репо или теги
  • docker registry на рабочем столе являются экспериментальными и недоступны для запроса GCR

Единственный «взлом» - это выполнение gcloud container images list (and list-tags) xxx в подпроцессе и анализ для извлечения необходимой информации.

Мы могли бы также проанализировать ответ HTML из консоли GCP (браузера), но это потребовало бы больше усилий.

Любая другая идея о том, как легко составить список Изображения GCR в Python?

И до Docker и Googlers , любой план расширения вашей библиотеки Python для взаимодействия с удаленными реестрами, *.gcr.io в частности ?

1 Ответ

2 голосов
/ 27 апреля 2020

Реестр контейнеров Google реализует тот же Docker HTTP API , что и любой другой реестр Docker.

Сначала получите токен доступа для своей учетной записи, используя gcloud auth print-access-token или одна из этих альтернатив .

Затем используйте Docker ' "Listing Repositories" конечную точку HTTP API:

>>> import requests
>>> access_token = ...
>>> resp = requests.get('https://gcr.io/v2/_catalog', auth=('_token', access_token))
>>> resp.json()
{
  "repositories": [
    <name>,
    ...
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...