コンテナイメージのレジストリの1サービスに Google Container Registry(GCR)があり、非公開のプライベートレジストリをホストできます。
GKE(Google Kubernetes Engine)上のコンテナも、GCRにプッシュしたイメージから起動できます。
GCRへのメインの配信ルートは Cloud Buildでビルドすることです。
ほかに外部でビルドしたイメージをコピーする場合には、dockerを用います。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"
}
}
docker-composeの設定ファイルにイメージのURIを記載すると起動時にpullしますが、gcloud認証のセットアップが完了していれば、gcr.ioのイメージもdocker-composeで起動できます。
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プロジェクトに適切なアクセス権限を持っていることも当然必要です。
Chuma Takahiro