11

Я использую shippable, чтобы нажимать личные изображения докеров в реестр Google Container, которые я тогда хочу извлечь из локально на ноутбук или внутри экземпляра в Google Вычислить двигатель.Вытащить личные изображения докеров из Google Контейнерного реестра без gcloud

Я знаю, что работает команда gcloud preview docker pull gcr.io/projectID/image-name, но я не могу полагаться на gcloud, установленную на каждой машине, с которой кому-то может понадобиться вытащить изображение.

Если я бег docker-compose up -d на моей машине, то я получаю следующее сообщение об ошибке:

Pulling image gcr.io/projectID/image-name... 
Pulling repository gcr.io/projectID/image-name 
Traceback (most recent call last): 
    File "<string>", line 3, in <module> 
    File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.main", line 31, in main 
    File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.docopt_command", line 21, in sys_dispatch 
    File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.command", line 27, in dispatch 
    File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.docopt_command", line 24, in dispatch 
    File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.command", line 59, in perform_command 
    File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.main", line 464, in up 
    File "/compose/build/docker-compose/out00-PYZ.pyz/compose.project", line 208, in up 
    File "/compose/build/docker-compose/out00-PYZ.pyz/compose.service", line 214, in recreate_containers 
    File "/compose/build/docker-compose/out00-PYZ.pyz/compose.service", line 199, in create_container 
    File "/compose/build/docker-compose/out00-PYZ.pyz/compose.progress_stream", line 37, in stream_output 
    File "/compose/build/docker-compose/out00-PYZ.pyz/compose.progress_stream", line 50, in print_output_event 
compose.progress_stream.StreamOutputError: Error: Status 403 trying to pull repository projectID/image-name: "Access denied." 

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

Я пробовал gcloud preview docker -a, но это не то решение, которое я ищу.

Заранее благодарю за любую помощь.

+0

Вы пробовали это: http://stackoverflow.com/questions/29291576/access-google-container-registry-without-the-gcloud-client – mattmoor

+0

Да, и ваше решение работает на GCE (спасибо!) , однако я не могу применить его при работе на локальной машине.Существует также проблема, которую я должен выполнить для проверки подлинности вручную на каждом создаваемом экземпляре GCE, который не является масштабируемым. – Maverick

+0

Локально, вы можете использовать до сих пор использование «входа в докер», но замените «gcloud auth print-access-token» на curl (или gcloud docker -a). – mattmoor

ответ

11

Если вы хотите работать с реестром Google Container на компьютере, который не находится в Google Compute Engine (т. Е. Локальном), используя ванильный докер, вы можете follow Google's instructions.

В двух основных методах используется токен доступа или файл ключа JSON.

Обратите внимание, что _token и _json_key фактические значения, которые обеспечивают для пользователя (-u)

Токен доступа

$ docker login -e [email protected] -u _token -p "$(gcloud auth print-access-token)" https://gcr.io 

JSON Key File

$ docker login -e [email protected] -u _json_key -p "$(cat keyfile.json)" https://gcr.io 

Чтобы создать файл ключа, вы можете следовать этим инструкциям:

  1. Открыть страницу учетных данных.
  2. Чтобы создать новую учетную запись службы, выполните следующие действия:
    • Нажмите кнопку Добавить учетные данные> учетной записи службы.
    • Выберите, следует ли публиковать/закрывать ключ учетной записи службы как стандартный файл P12 или как файл JSON, который может быть загружен клиентской библиотекой Google API.
    • Ваша новая пара открытого и закрытого ключей генерируется и загружается на ваш компьютер; он служит единственной копией этого ключа. Вы несете ответственность за их надежное хранение.

Вы можете view Google's documentation on generating a key file here.

+0

Выходит ли '_json_key' json-файл? Любая идея, с каким полем это соответствует? –

+0

'_json_key' - буквальное значение. Это сигнализирует GCR, что ожидать от флага '-p'. – anthonator

Смежные вопросы