Artifact Registry に Docker コンテナ イメージを保存する
Artifact Registry は、プライベート パッケージと Docker コンテナ イメージを 1 か所で管理できる場所として機能します。
このクイックスタートでは、次の方法について説明します。
- Artifact Registry でプライベート Docker リポジトリを作成する
- 認証を設定する
- イメージをリポジトリに push する
- リポジトリからイメージを pull する
このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、「ガイドを表示」をクリックしてください。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Make sure that you have the following role or roles on the project: Artifact Registry Administrator
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
IAM に移動 - プロジェクトを選択します。
- [ アクセスを許可] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。
- [ロールを選択] リストでロールを選択します。
- 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Make sure that you have the following role or roles on the project: Artifact Registry Administrator
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
IAM に移動 - プロジェクトを選択します。
- [ アクセスを許可] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。
- [ロールを選択] リストでロールを選択します。
- 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
-
- Cloud Shell
- Cloud Shell は、 Google Cloudでホストされているリソースを管理するためのシェル環境です。Docker と Google Cloud CLI( Google Cloudの主要なコマンドライン インターフェース)がプリインストールされています。
- ローカルシェル
- ローカルシェルを使用する場合は、ご利用の環境に Docker と gcloud CLI をインストールする必要があります。
Google Cloud コンソールに移動します。
[Cloud Shell をアクティブにする](
)ボタンをクリックします。
gcloud CLI をインストールします。既存のインストールを更新するには、
gcloud components update
コマンドを実行します。Docker をまだインストールしていなければ、インストールします。
Docker がレジストリを操作するには特権アクセスが必要です。Linux や Windows では、Docker コマンドを実行するユーザーを Docker セキュリティ グループに追加します。Docker Desktop は、root ユーザーとして仮想マシンで実行されるため、この手順は MacOS では不要です。
Linux
Docker セキュリティ グループは
docker
と呼ばれます。ユーザー名を追加するには、次のコマンドを実行します。sudo usermod -a -G docker ${USER}
Windows
Docker セキュリティ グループは
docker-users
と呼ばれます。管理者のコマンド プロンプトからユーザーを追加するには、次のコマンドを実行します。net localgroup docker-users DOMAIN\USERNAME /add
説明
- DOMAIN は Windows ドメインです。
- USERNAME はユーザー名です。
ログアウトして再度ログインすると、グループ メンバーシップの変更が反映されます。仮想マシンを使用している場合、メンバーシップの変更を有効にするために、仮想マシンの再起動が必要になることがあります。
Docker が稼働中であることを確認するには、現在の時刻と日付を返す次の Docker コマンドを実行します。
docker run --rm busybox date
--rm
フラグは、終了時にコンテナ インスタンスを削除します。Google Cloud コンソールで [リポジトリ] ページを開きます。
[追加] [リポジトリを作成] をクリックします。
リポジトリ名として
quickstart-docker-repo
を指定します。形式として Docker を選択し、モードとして Standard を選択します。
[ロケーション タイプ] で、[リージョン] を選択し、ロケーション
us-west1
を選択します。[作成] をクリックします。
次のコマンドを実行して、場所
us-west1
に「docker repository」という説明の付いたquickstart-docker-repo
という新しい Docker リポジトリを作成します。gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \ --location=us-west1 --description="Docker repository" \ --project=PROJECT
ここで、PROJECT は Google Cloud プロジェクト ID です
次のコマンドを実行して、リポジトリが作成されたことを確認します。
gcloud artifacts repositories list \ --project=PROJECT
us-docker.pkg.dev
は、Artifact Registry Docker リポジトリに格納されているコンテナ イメージのホスト名です。これには、リポジトリのロケーション(us
)が含まれます。google-samples
は、プロジェクト ID です。containers
は、リポジトリ ID です。/gke/hello-app
は、リポジトリcontainers
内のイメージのパスです。us-west1
は、リポジトリのロケーションです。us-west1-docker.pkg.dev
は、作成した Docker リポジトリのホスト名です。- PROJECT は Google Cloud プロジェクト ID です。
プロジェクト ID にコロン(
:
)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。 quickstart-docker-repo
は、作成したリポジトリの ID です。quickstart-image
はリポジトリで使用するイメージ名です。イメージ名は、ローカル イメージ名とは別の名前にできます。このクイックスタートでは、イメージをリポジトリ IDquickstart-docker-repo
の直下に保存します。tag1
は Docker イメージに追加するタグです。タグを指定しない場合は、Docker でデフォルトのタグlatest
が適用されます。Google Cloud コンソールで [リポジトリ] ページを開きます。
[リポジトリ] リストで、
quickstart-docker-repo
リポジトリを選択します。[削除] をクリックします。
- コンテナ イメージの操作の詳細を学習する。
- Docker について詳しく学習する。
- DevOps に関するリソースをご覧ください。また、DevOps Research and Assessment(DORA) 研究プログラムについても確認してください。
シェルを選択する
このクイックスタートをすべて実行するためには、Cloud Shell またはローカルシェルを使用します。
Cloud Shell の起動
Cloud Shell を起動するには、次の手順に従います。
コンソールの下部にあるフレーム内で Cloud Shell セッションが開きます。このシェルで gcloud
コマンドを実行します。
ローカルシェルの設定
gcloud CLI と Docker をインストールする手順は次のとおりです。
Docker リポジトリを作成する
このクイックスタートのサンプル イメージを保存する Docker リポジトリを作成します。
コンソール
このリポジトリがリポジトリ リストに追加されます。
gcloud
Artifact Registry コマンドの詳細については、gcloud artifacts
コマンドを実行してください。
認証を構成する
イメージを push または pull する前に、Google Cloud CLI を使用して Artifact Registry に対するリクエストを認証します。
リージョン us-west1
の Docker リポジトリの認証を設定するには、次のコマンドを実行します。
gcloud auth configure-docker us-west1-docker.pkg.dev
このコマンドにより、Docker 構成が更新されます。これで、 Google Cloud プロジェクトの Artifact Registry に接続して、イメージの push と pull ができるようになりました。
その他の認証方法については、認証方法をご覧ください。
push するイメージを取得する
このクイックスタートでは、hello-app
という名前のサンプル イメージを push します。
次のコマンドを実行して、イメージのバージョン 1.0 を pull します。
docker pull us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Artifact Registry のイメージパスは複数の部分から成ります。このサンプル イメージの場合は、次のようになります。
イメージをリポジトリに追加する
Docker イメージを Artifact Registry に push する前に、イメージにリポジトリ名をタグ付けしておく必要があります。
イメージにレジストリ名をタグ付けする
Docker イメージにレポジトリ名をタグ付けすると、イメージを特定の場所に push するように docker push
コマンドが構成されます。このクイックスタートでは、ホストの場所は us-west1-docker.pkg.dev
です。
次のコマンドを実行して、イメージに quickstart-image:tag1
としてタグ付けします。
docker tag us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 \ us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
説明:
これで、作成したリポジトリにイメージを push する準備が整いました。
イメージを Artifact Registry に push する
認証を構成してローカル イメージにタグ付けしたら、作成したリポジトリにイメージを push できます。
Docker イメージを push するには、次のコマンドを実行します。
docker push us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
:
)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
Artifact Registry からイメージを pull する
Artifact Registry からローカルマシンにイメージを pull するには、次のコマンドを実行します。
docker pull us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
:
)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
latest: Pulling from [PROJECT-ID]/quickstart-image:tag1 Digest: sha256:70c42... Status: Image is up to date for us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
クリーンアップ
このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、次の手順を実施します。
リポジトリを削除する前に、保持する必要があるイメージが別の場所で使用可能であることを確認してください。
リポジトリを削除するには、次の手順を行います。
コンソール
gcloud
quickstart-docker-repo
リポジトリを削除するには、次のコマンドを実行します。
gcloud artifacts repositories delete quickstart-docker-repo --location=us-west1