Google Cloud

Google CloudのコンテナレジストリサービスArtifact Registryに入門してみた

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リポジトリを作成

  1. Cloud Consoleを開き、Artifact Registryサービスを選び、「リポジトリを作成」をクリックします(事前にArtifact Registry APIを有効にしておきます)
  2. リポジトリの作成から以下の通り入力を行い、リポジトリを作成します。
  • 名前:test-docker-repo
  • 形式:Docker
  • ロケーションタイプ:リージョン
  • リージョン:us-central1 (アイオワ)
  • 暗号化:Googleが管理する暗号鍵

 

Dockerに対する認証設定

続いてArtifact RegistryのDockerリポジトリに対しての認証を構成します。

  1. 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するイメージを取得する

  1. 以下の通りコマンドを実行してサンプルに利用するイメージを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

     

イメージにレジストリ名をタグ付けする

  1. 次のコマンドを実行して先ほど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する

  1. 以下のコマンドを実行して、リポジトリにイメージを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

     

  2. Cloud Consoleでリポジトリ内にイメージがpushされていることを確認します。

 

Artifact Registry からイメージを pull する

  1. 以下のコマンドを実行して、レジストリに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

 

ABOUT ME
Gaku
JTCでデータエンジニアっぽいことをしています。仕事ではGoogle Cloud、GTM、Google AnalyticsやKARTE、Datahubあたりを触っています。 本ブログではGoogle Cloudやデータエンジニアリング、たまに趣味などの記事をアップします。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA