概要
ローカル環境で開発してビルドしたコンテナイメージを、ローカルから「Container Registry」のリポジトリにプッシュするための作業
参考
https://cloud.google.com/container-registry/docs/pushing-and-pulling#push_the_tagged_image_to
手順
1. gcloudの設定
- gcloudコマンドをローカル環境にインストール
2.初期設定
gcloud init
2. イメージのPush/Pull用サービスアカウント作成
自分のユーザーアカウントを使う場合、プロジェクトがいろいろと紐づいているとプロジェクトIDの選択ミスが怖いので、専用のサービスアカウントを作る。
1.サービスアカウント作成
- コンソールで作業
2.権限設定
- 「Container Registry」のコンテナイメージはCloud Storageで管理され、権限も、Cloud Storageの「ストレージ管理者」権限を付与するだけ。
- https://cloud.google.com/container-registry/docs/access-control#grant https://cloud.google.com/sdk/docs/authorizing?hl=ja#authorizing_with_a_service_account
3.サービスアカウントのキーを作成し、ローカルで認証設定
gcloud auth activate-service-account
- https://cloud.google.com/sdk/docs/authorizing?hl=ja#authorizing_with_a_service_account
3. Docker 認証設定
gcloud をDockerの認証ヘルパーとして使用するための設定
- ローカルで
gcloud auth configure-docker
を実行
4. Dockerイメージのプッシュ
※ もし複数アカウントがある場合は以下でアカウントを切り替えるgcloud config set account [ACCOUNT]
1.ローカル イメージにレジストリ名でタグ付けする
- 命名規則 : [HOSTNAME]/[PROJECT-ID]/[IMAGE]
- [HOSTNAME] : 以下から選ぶ。これでイメージを保存する場所が決まる。
- gcr.io は米国内のデータセンターでイメージをホストしていますが、今後は場所が変更される可能性があります。
- us.gcr.io は米国内のデータセンターでイメージをホストしていますが、gcr.io によってホストされるイメージからは独立したストレージ バケットです。
- eu.gcr.io は、欧州連合でイメージをホストします。
- asia.gcr.io は、アジアのデータセンターでイメージをホストします。
- [PROJECT-ID] : 対象のGoogle CloudプロジェクトのプロジェクトID
- [IMAGE] : コンテナイメージの名前
- [HOSTNAME] : 以下から選ぶ。これでイメージを保存する場所が決まる。
- タグ付けコマンド :
docker tag [ローカル イメージ名またはイメージ ID] [レジストリ名]:[タグ(未指定はlatest)]
2.プッシュ
docker push [レジストリ名]:[タグ(未指定はlatest)]
新規でプッシュすると、Container Registry上にリポジトリができる。