Реестр контейнеров Google + Google Compute Engine + Docker
Я не могу найти способ заставить все эти три технологии работать вместе.
У меня есть реестр Google Container. В нем у меня есть 2 частных изображения, давайте назовем их A и B. Я хочу создать шаблон одного экземпляра, который выполняет следующие действия:
- Окно запуска -d gcr.io/project_id/A:latest
- docker run -d gcr.io/project_id/B:latest
Это все, что мне нужно сделать. Я надеялся сделать это в скрипте запуска, чтобы я мог просто использовать простое изображение в качестве своей базы и развернуть его в prod.
Опробовали все 3 версии Контейнер оптимизированной ОС и все 3 версии CoreOS. Каждый дает немного разные ошибки.
Некоторые примеры предлагают использовать gcloud docker -- pull
, но gcloud не выполняет авторизацию правильно ни в одной из 6 сред, которые я пробовал.
Другие примеры предлагают использовать docker login -u oauth2accesstoken -p "$(gcloud auth application-default print-access-token)" https://gcr.io
Это также не удается.
Единственный другой вариант, который я нашел, это сделать docker login -u _json_key -p "$(cat keyfile.json)" https://gcr.io
, который позволил мне вытащить образы GCE. Недостатком этого подхода является то, как я могу получить этот ключевой файл в изображениях? Я думаю, что я могу создать собственное изображение с добавленным ключевым файлом, но я пытался придерживаться стандартного изображения, которое выполняет две команды запуска Docker и не более. Это невозможно?
1 ответ
Какие именно ошибки вы видите?
docker-credential-gcr может извлекать токены доступа из метаданных GCE. Он также может получить токен доступа gcloud SDK, выполнив gcloud config config-helper --format='value(credential.access_token)
под сценой. gcloud auth print-access-token
использовался в прошлом, но официально не поддерживается.