🗂

Google Artifact Registry(GAR)入門 Dockerクイックスタート

2022/03/27に公開

概要

個人の備忘録としてGoogle Artifact Registryの Dockerクイックスタートの実行手順について記載していきます。

参考
https://cloud.google.com/artifact-registry/docs/docker/store-docker-container-images?hl=ja

前提

  • Google Cloudのアカウント作成
  • Google Cloud Consoleの「プロジェクト セレクタ」ページでプロジェクトを選択または新規作成
  • Artifact Registry APIを有効にします

シェルの設定

Cloud Shellまたはローカルシェルを利用します。
今回はローカルシェルを利用してみます。

https://cloud.google.com/artifact-registry/docs/docker/store-docker-container-images?hl=ja

上記資料を参考にインストールします。
インストール後、下記コマンドでversionを確認できます。

$ gcloud version
Google Cloud SDK 378.0.0
bq 2.0.74
core 2022.03.18
gsutil 5.8

gcloudはAWSのAWS CLIコマンドに該当するものです。

またgcloudを利用するには次のようにアカウントの認証とプロジェクトの設定が必要です。

# gcloudの認証・ログイン
$ gcloud auth login

# 利用するprojectのセット
$ gcloud config set project PROJECT_ID

# 設定を確認
$ gcloud config list

Dockerリポジトリを作成

コンソールの場合

  1. リポジトリページを開きます

  2. [リポジトリを作成] をクリックします。

  3. リポジトリ名を指定(この例ではquickstart-docker-repo)

  4. 形式でDockerを選択

  5. ロケーションタイプリージョンを選択し、 us-central1を指定

  6. 入力完了後、「作成」をクリック

作成が完了すると次のように表示を確認できます。

gcloud経由の場合

gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \
--location=us-central1 --description="Docker repository"

作成後、下記コマンドで一覧を確認できます。

認証を構成

Artifact Registry へのリクエストを認証するように Docker を構成します。

# リージョン`us-central1`のDockerリポジトリに対する認証を設定
$ gcloud auth configure-docker us-central1-docker.pkg.dev
Adding credentials for: us-central1-docker.pkg.dev
After update, the following will be written to your Docker config file located at [/Users/sasaki-katsuharu/.docker/config.json]:
 {
  "credHelpers": {
    "us-central1-docker.pkg.dev": "gcloud"
  }
}

Do you want to continue (Y/n)?  Y

Docker configuration file updated.

これによりDocker構成が更新されます。Google CloudプロジェクトのArtifact Registryに接続して、イメージのpushとpullができるようになります。

参考

pushするイメージを取得

クイックスタートでは hello-appという名前のサンプルイメージをpushしています。

  1. イメージを保存するディレクトリに移動
  2. 次のコマンドを実行して、イメージのバージョン1.0をpullします。
$ docker pull us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0

# pullしたイメージを確認
$ docker iamges 
us-docker.pkg.dev/google-samples/containers/gke/hello-app         1.0       f4d42e081a02   3 weeks ago     11.5MB

リポジトリにイメージを追加

DockerイメージをArtifact Registryにpushするにはそのイメージにリポジトリ名でタグ付けする必要があります。

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

Dockerイメージにリポジトリ名をタグ付けすると、イメージを特定の場所にpushするようにdocker pushコマンドが構成されます。今回の例ではホストの場所はus-central1-docker.pkg.devです。

$ docker tag us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 \
us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
  • PROJECTには環境に応じた値を指定します。
  • docker.pkg.devはDockerリポジトリのホスト名です
  • quickstart-imageはリポジトリで使用するイメージ名。イメージ名はローカルイメージ名と異なる場合があります。
  • tag1はDockerイメージに追加するタグです。
# イメージ・タグ付けを確認
$ docker images
us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image   tag1      f4d42e081a02   3 weeks ago     11.5MB
us-docker.pkg.dev/google-samples/containers/gke/hello-app                                1.0       f4d42e081a02   3 weeks ago     11.5MB

これでイメージをpushする準備ができました。

イメージをArtifact Registryにpushする

$ docker push us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1

コンソール上で次のように確認できます
▼push前

▼push後

Artifact Registryからイメージをpull

$ docker pull us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1

クリーンアップ

以上で設定が完了です。
今回作成したリソースは次のコマンドで削除できます。

$ gcloud artifacts repositories delete quickstart-docker-repo --location=us-central1

Discussion