MacからGoogleContainerRegistryアクセスでエラー
5812 ワード
概要
- ローカルで作成したDockerイメージをGCR(GoogleContainerRegistry)にPUSHしたい
- MacからGCRにDockerImageをPULL/PUSHできない(Winは試していない)
- CloudShellからはPULL/PUSH可能
- どうやら権限周りが原因っぽい
- 以下のようなエラーで弾かれる
- 解決したのでメモしておく
$ docker pull asia.gcr.io/[project-id]/[repository]:latest
Error response from daemon: pull access denied for asia.gcr.io/[project-id]/[repository], repository does not exist or may require 'docker login': denied: Permission denied for "latest" from request "/v2/[project-id]/[repository]/manifests/latest".
詳細
Docker認証ヘルパーとしてgcloudコマンド発行
$ gcloud auth configure-docker
$ docker pull asia.gcr.io/[project-id]/[repository]:latest
Error response from daemon: pull access denied for asia.gcr.io/[project-id]/[repository], repository does not exist or may require 'docker login': denied: Permission denied for "latest" from request "/v2/[project-id]/[repository]/manifests/latest".
Docker認証ヘルパーとしてgcloudコマンド発行
$ gcloud auth configure-docker
※アップデートを促されるメッセージが出た場合は"gcloud components update"を実行してから
- GCRの実態はGoogleCloudStorageなのでこれに権限を与えてみる
- 「ストレージオブジェクト閲覧者」権限のみ与えてみる
PULLしてみる
$ docker pull asia.gcr.io/[project-id]/[repository]:latest
latest: Pulling from [project-id]/[repository]
Digest: sha256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Status: Downloaded newer image for asia.gcr.io/[project-id]/[repository]:latest
asia.gcr.io/[project-id]/[repository]:latest
確認
$ docker images asia.gcr.io/[project-id]/[repository]
REPOSITORY TAG IMAGE ID CREATED SIZE
asia.gcr.io/[project-id]/[repository] latest f7bb5701a33c 2 weeks ago 126MB
PULLできてる
PUSHもしてみる
$ docker image push asia.gcr.io/[project-id]/[repository]
The push refers to repository [asia.gcr.io/[project-id]/[repository]]
75248c0d5438: Preparing
49434cc20e95: Preparing
556c5fb0d91b: Preparing
denied: Token exchange failed for project '[project-id]'. Caller does not have permission 'storage.buckets.get'. To configure permissions, follow instructions at: https://cloud.google.com/container-registry/docs/access-control
やはり閲覧権限だけではPUSHできない様子
「ストレージオブジェクト作成者権限」を付与してみる
PUSHしてみる
$ docker image push asia.gcr.io/[project-id]/[repository]
The push refers to repository [asia.gcr.io/[project-id]/[repository]]
75248c0d5438: Preparing
49434cc20e95: Preparing
556c5fb0d91b: Preparing
denied: Token exchange failed for project '[project-id]'. Caller does not have permission 'storage.buckets.get'. To configure permissions, follow instructions at: https://cloud.google.com/container-registry/docs/access-control
ダメらしい。。
「ストレージオブジェクト管理者」を付与してみる
PUSHしてみる
$ docker image push asia.gcr.io/[project-id]/[repository]:latest
The push refers to repository [asia.gcr.io/[project-id]/[repository]]
75248c0d5438: Preparing
49434cc20e95: Preparing
556c5fb0d91b: Preparing
denied: Token exchange failed for project '[project-id]'. Caller does not have permission 'storage.buckets.get'. To configure permissions, follow instructions at: https://cloud.google.com/container-registry/docs/access-control
ダメらしい
「ストレージ管理者」権限を付与してみる
PUSHしてみる
$ docker image push asia.gcr.io/[project-id]/[repository]:latest
The push refers to repository [asia.gcr.io/[project-id]/[repository]]
75248c0d5438: Layer already exists
49434cc20e95: Layer already exists
556c5fb0d91b: Layer already exists
latest: digest: sha256:36b77d8bb27ffca25c7f6f53cadd059aca2747d46fb6ef34064e31727325784e size: 948
PUSHできた
結論
- MacなどからGCRへのアクセスにはGCSの権限を変更する必要がある
- GCRへのPULLには「ストレージオブジェクトの閲覧者」権限が必要
- GCRへのPUSHには「ストレージの管理者」権限が必要
- gcloudの認証は予め済ませておく
参考
Author And Source
この問題について(MacからGoogleContainerRegistryアクセスでエラー), 我々は、より多くの情報をここで見つけました https://qiita.com/ezaqiita/items/ee88b0a5e3ae4fea6dca著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .