1

docker コンテナ イメージを Google Container Engine レジストリにプッシュしようとしています:

$ sudo gcloud docker push gcr.io/<my_project>/node
The push refers to a repository [gcr.io/<my_project>/node] (len: 1)
24c43271ae0b: Image already exists 
70a0868daa56: Image already exists 
1d86f57ee56d: Image already exists 
a46b473f6491: Image already exists 
a1ac8265769f: Image already exists 
290bb858e1c3: Image already exists 
d6fc4b5b4917: Image already exists 
3842411e5c4c: Image already exists 
7a01cc5f27b1: Image already exists 
dbacfa057b30: Image already exists 
latest: digest: sha256:02be2e66ad2fe022f433e228aa43f32d969433402820035ac8826880dbc325e4 size: 17236
Received unexpected HTTP status: 500 Internal Server Error

コマンドをこれ以上冗長にすることはできません。どちらとも:

$ sudo gcloud docker push gcr.io/<my_project>/node --verbosity info

また、動作するはずのこのコマンドでも:

$ sudo gcloud docker --log-level=info push gcr.io/sigma-cairn-99810/node
usage: gcloud docker  [EXTRA_ARGS ...] [optional flags]
ERROR: (gcloud.docker) unrecognized arguments: --log-level=info

ドキュメント (を参照EXTRA_ARGS) による--log-level=infoと、有効な docker オプションです。

SYNOPSIS
    gcloud docker [EXTRA_ARGS ...] [--authorize-only, -a]
        [--docker-host DOCKER_HOST]
        [--server SERVER,[SERVER,...], -s SERVER,[SERVER,...]; default="gcr.io,us.gcr.io,eu.gcr.io,asia.gcr.io,b.gcr.io,bucket.gcr.io,appengine.gcr.io"]
        [GLOBAL-FLAG ...]
...    

POSITIONAL ARGUMENTS
     [EXTRA_ARGS ...]
        Arguments to pass to docker.

container-vmGCP がマシン インスタンスにインストールするデフォルトのサービス アカウントを使用しています。のすべてのリソースに対する所有者権限も付与しました<my_project>


アップデート:

実行すると、次のsudo gsutil ls -bL gs://artifacts.<my_project>.appspot.comようになります。

gs://artifacts.<my_project>.appspot.com/ :
    Storage class:          STANDARD
    Location constraint:        US
    Versioning enabled:     None
    Logging configuration:      None
    Website configuration:      None
    CORS configuration:         None
    Lifecycle configuration:    None
    ACL:                []
    Default ACL:            []

非サービス アカウントで認証した後に同じことを行うと、次の両方が得られACLますDefault ACL

ACL:                
  [
    {
      "entity": "project-owners-262451203973",
      "projectTeam": {
        "projectNumber": "262451203973",
        "team": "owners"
      },
      "role": "OWNER"
    },
    {
      "entity": "project-editors-262451203973",
      "projectTeam": {
        "projectNumber": "262451203973",
        "team": "editors"
      },
      "role": "OWNER"
    },
    {
      "entity": "project-viewers-262451203973",
      "projectTeam": {
        "projectNumber": "262451203973",
        "team": "viewers"
      },
      "role": "READER"
    }
  ]
Default ACL:            
  [
    {
      "entity": "project-owners-262451203973",
      "projectTeam": {
        "projectNumber": "262451203973",
        "team": "owners"
      },
      "role": "OWNER"
    },
    {
      "entity": "project-editors-262451203973",
      "projectTeam": {
        "projectNumber": "262451203973",
        "team": "editors"
      },
      "role": "OWNER"
    },
    {
      "entity": "project-viewers-262451203973",
      "projectTeam": {
        "projectNumber": "262451203973",
        "team": "viewers"
      },
      "role": "READER"
    }
  ]
4

1 に答える 1

1

実行sudo gsutil ls -bL gs://artifacts.<my_project>.appspot.comして、GCS バケットにアクセスできるかどうかを確認できますか。これにより、docker イメージのストレージのアクセス許可が確認されます。

所有者に追加されることで許可が必要だと思いますが、これは許可しているかどうかを確認します。

については、コマンドに対してのみ有効EXTRA_ARGSだと思いますが、認識しません--log-level="info"docker daemondocker push--log-level="info"

アップデート

ログを再度確認すると、「イメージは既に存在します」というログ エントリが示すように、ほとんど既存のイメージをプッシュしています。最初の新しい書き込みステップで失敗しました。これは、最初に使用したインスタンスのスコープが読み取り専用であったことが問題である可能性が高いことを示しています。

このコマンドを実行して、出力を共有していただけますか。 curl -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/service-accounts/default/scopes

スコープを探していますhttps://www.googleapis.com/auth/devstorage.read_write

発生した可能性があるのは、インスタンスが最初にこのスコープで作成されたものではなく、インスタンスのスコープを変更できないため、読み取りのみが可能であるということです。

この場合、解決策はおそらく新しいインスタンスを作成することです。

このような状況でより良いメッセージが提供されるように、バグを報告します。

于 2016-02-03T22:24:49.400 に答える