Хобрук: Ваш путь к мастерству в программировании

Docker SDK с Google Container Registry

Мы хотим запросить 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 и сотрудников Google, какие планы по расширению вашей библиотеки Python для взаимодействия с удаленными реестрами, в частности *.gcr.io ?


  • Почему бы не использовать реестр контейнеров Docker: cloud.google.com/container- реестр/документы/ссылка/docker-api ? Это стандартный REST API, который вы можете использовать с библиотекой запросов в python. 27.04.2020
  • @AdiDembak знал только об API движка. На мой взгляд, Docker SDK должен охватывать и этот набор. Спасибо ! 28.04.2020

Ответы:


1

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

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

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

>>> import requests
>>> access_token = ...
>>> resp = requests.get('https://gcr.io/v2/_catalog', auth=('_token', access_token))
>>> resp.json()
{
  "repositories": [
    <name>,
    ...
  ]
}
27.04.2020
  • Спасибо ! Для токена я использовал os.popen('gcloud auth print-access-token').read()[:-1], так как os уже был импортирован + docs. docker.com/registry/spec/api/#listing-image-tags, потому что нам нужны теги. 28.04.2020
  • Новые материалы

    Понимание дженериков в TypeScript: подробное руководство
    Введение TypeScript, строго типизированный надмножество JavaScript, хорошо известен своей способностью улучшать масштабируемость, удобочитаемость и ремонтопригодность приложений. Одной из..

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..