Google Container Registryへのdockerイメージ配信

Googleのコンテナイメージのレジストリに Google Container Registry(GCR)があり、非公開のプライベートレジストリをホストできます。
GKE(Google Kubernetes Engine)上のコンテナも、GCRにプッシュしたイメージから起動できます。

GCRとのイメージのpush / pull は、dockerコマンドに統合されました。
以前はgcloud dockerという専用のコマンドがありましたが、gcloudコマンドはv196.0.0以降、dockerの認証ヘルパーに再整理されています。

196.0.0 (2018-04-04)
  Breaking Changes
**(Docker)** gcloud docker will not be supported for Docker client
        versions above 18.03. Please use gcloud auth configure-docker to
        configure docker to use gcloud as a credential helper; then, use docker
        as you would for non-GCR registries, e.g. docker pull
        gcr.io/project-id/my-image.
		
Container Registry
      ▪ Promoted gcloud auth configure-docker to GA.
      ▪ Modified container images add-tag to allow the specification of
        multiple destination tags.

以下のようにgcloud auth configure-dockerコマンドを実行すると、初期セットアップが完了します。
これにより、gcr.ioドメイン上のイメージの docker push / docker pull の際にgcloud経由で認証が行われます。

$ gcloud auth configure-docker
The following settings will be added to your Docker config file 
located at [~/.docker/config.json]:
 {
  "credHelpers": {
    "gcr.io": "gcloud", 
    "us.gcr.io": "gcloud", 
    "eu.gcr.io": "gcloud", 
    "asia.gcr.io": "gcloud", 
    "staging-k8s.gcr.io": "gcloud"
  }
}

Google Container Registryの外部環境でビルドしたイメージをpushしたい場合には、docker build -t gcr.io/pj-name/container-nameまたはdocker tag original-image gcr.io/pj-name/container-nameのように、dockerコマンドでタグをつけます。

イメージプレフィクスの冒頭には、いずれかのgcr.ioドメイン、2番目のIDにはGCPのプロジェクト名を指定する必要があります。
また、docker pushするアカウントがGCPプロジェクトに適切なアクセス権限を持っていることも当然必要です。