0

我正在尝试从运行在其他服务器(不是 GCE)中的 CoreOS 机器中的 Google 容器注册表下载图像。

我配置了一个新的服务帐户:

core@XXXX ~ $ docker run -t -i -v $(pwd)/keys:/tmp/keys --name gcloud-config ernestoalejo/google-cloud-sdk-with-docker gcloud auth activate-service-account XXXXXXX@developer.gserviceaccount.com --key-file /tmp/keys/key.p12 --project XXXX
Activated service account credentials for: [XXXXXXX@developer.gserviceaccount.com]

该帐户处于活动状态,但是当我尝试下载容器映像时,它返回禁止的 HTTP 状态。

core@XXXX ~ $ /usr/bin/docker run --volumes-from gcloud-config --rm -v /var/run/docker.sock:/var/run/docker.sock ernestoalejo/google-cloud-sdk-with-docker sh -c "gcloud preview docker pull gcr.io/XXXXX/influxdb"
Pulling repository gcr.io/XXXXX/influxdb
time="2015-05-08T06:38:55Z" level="fatal" msg="HTTP code: 403" 
ERROR: (gcloud.preview.docker) A Docker command did not run successfully.
Tried to run: 'docker pull gcr.io/XXXXX/influxdb'
Exit code: 1

服务器中只有一个账号,并且配置正确:

core@XXXX ~ $ /usr/bin/docker run --volumes-from gcloud-config --rm -v /var/run/docker.sock:/var/run/docker.sock ernestoalejo/google-cloud-sdk-with-docker sh -c "gcloud auth list"

To set the active account, run:
  $ gcloud config set account ``ACCOUNT''

Credentialed accounts:
 - XXXXXXXXXXXXX@developer.gserviceaccount.com (active)

如何授权外部机器从注册表下载图像?

注意:图像与此ernestoalejo/google-cloud-sdk-with-docker相同,google/cloud-sdk但已修复此问题。

更新:我也尝试过这个答案的解决方案,但没有区别。

PROJECT_ID=XXXXXX
ROBOT=XXXXXX@developer.gserviceaccount.com
gsutil acl ch -u $ROBOT:R gs://artifacts.$PROJECT_ID.appspot.com
gsutil -m acl ch -R -u $ROBOT:R gs://artifacts.$PROJECT_ID.appspot.com
gsutil defacl ch -u $ROBOT:R gs://artifacts.$PROJECT_ID.appspot.com
4

1 回答 1

0

Digital Ocean 的新法兰克福地区似乎根本无法访问 Google Container Registry。它总是返回 403 Forbidden。一旦我在伦敦使用服务器,一切就开始工作了。

于 2015-05-08T16:50:14.473 回答