他のサーバー (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
サーバーには 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