Google CloudのコンテナレジストリサービスArtifact Registryに入門してみた
Docker Hubでおなじみのレジストリサービス、GCPユーザーならArtifact Registryも試してみよう
コンテナイメージを格納する際に利用するレジストリサービスとして代表的なのはDocker社によって運営されているDocker Hubかと思います。Docker Hub以外にも様々なレジストリサービスがあるのですが、本記事ではGoogle Cloud内のレジストリサービスであるArtifact Registryについて、サービスの説明と具体的な利用例について触れたいと思います。
GCPのレジストリサービス、これから利用する場合はArtifact Registryを選ぼう
Google Cloudには以下2つのレジストリサービスがあります。
- Container Registry
- Artifact Registry
Container Registryはレジストリサービスとして2015年6月にGAとなったサービスです。その後、Google Cloudでは新たなレジストリサービスとしてArtifact Registryがリリースされ、2020年の11月にGAとなりました。
Artifact Registryは顧客管理の暗号鍵、VPC-SC対応、Pub/Sub通知などContainer Registryの機能拡張したものであり、Google Cloudとしてはこれからレジストリサービスを利用する場合はArtifact Registryの利用を推奨しています。
DockerイメージをArtifact Registryのリポジトリにpush/pullしてみよう
ではここからは実際にArtifact Registryを利用して、Dockerイメージをリポジトリに対してpush/pullするための手順をご説明したいと思います。
Cloud ConsoleでDockerリポジトリを作成
- Cloud Consoleを開き、Artifact Registryサービスを選び、「リポジトリを作成」をクリックします(事前にArtifact Registry APIを有効にしておきます)
- リポジトリの作成から以下の通り入力を行い、リポジトリを作成します。
- 名前:test-docker-repo
- 形式:Docker
- ロケーションタイプ:リージョン
- リージョン:us-central1 (アイオワ)
- 暗号化:Googleが管理する暗号鍵
Dockerに対する認証設定
続いてArtifact RegistryのDockerリポジトリに対しての認証を構成します。
- Cloud SDKがインストールされている環境で以下のコマンドを実行します。
~/gar$ gcloud auth configure-docker us-central1-docker.pkg.dev
以下のように、“us-central1-docker.pkg.dev”: “gcloud”が追加されていることを確認します。
(今回は既に別の設定があったのでWARNINGが出ています)WARNING: Your config file at [/home/xxxxxx/.docker/config.json] contains these credential helper entries: { "credHelpers": { "us-central1-docker.pkg.dev": "gcloud", "asia-northeast1-docker.pkg.dev": "gcloud" } } Adding credentials for: us-central1-docker.pkg.dev gcloud credential helpers already registered correctly.
リポジトリにpushするイメージを取得する
- 以下の通りコマンドを実行してサンプルに利用するイメージをpullします。
~/gar$ docker pull us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
以下の通りコマンドが終了することを確認します。
1.0: Pulling from google-samples/containers/gke/hello-app Digest: sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Status: Image is up to date for us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
イメージにレジストリ名をタグ付けする
- 次のコマンドを実行して先ほどpullしたイメージに”quickstart-image:tag1″としてタグ付けします。
~/gar$ docker tag us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 us-central1-docker.pkg.dev/[プロジェクト名]/test-docker-repo/quickstart-image:tag1
イメージをArtifact Registryにpushする
- 以下のコマンドを実行して、リポジトリにイメージをpushします。
~/gar$ docker push us-central1-docker.pkg.dev/[プロジェクト名]/test-docker-repo/quickstart-image:tag1
正常にpushされると以下のように表示されます。
The push refers to repository [us-central1-docker.pkg.dev/[プロジェクト名]/test-docker-repo/quickstart-image] 6aebdxxxxxxx: Pushed 8d3acxxxxxxx: Pushed tag1: digest: sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx size: xxx
- Cloud Consoleでリポジトリ内にイメージがpushされていることを確認します。
Artifact Registry からイメージを pull する
- 以下のコマンドを実行して、レジストリにpushしたイメージをpullできることを確認します。
~/gar$ docker pull us-central1-docker.pkg.dev/[プロジェクト名]/test-docker-repo/quickstart-image:tag1
コマンド実行結果
tag1: Pulling from [プロジェクト名]/test-docker-repo/quickstart-image Digest: sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Status: Image is up to date for us-central1-docker.pkg.dev/[プロジェクト名]/test-docker-repo/quickstart-image:tag1 us-central1-docker.pkg.dev/[プロジェクト名]/test-docker-repo/quickstart-image:tag1
作業が終了したら、GCPの料金が課金されないようにリソース(作成したリポジトリ)を削除しておきましょう。
本記事については以下のGoogle Cloudの公式ドキュメントを参考に作成しています。詳細については以下ドキュメントを参考にしていただければと思います。
https://cloud.google.com/artifact-registry/docs/docker/store-docker-container-images?hl=ja
コメント