Docker コンテナ イメージを Artifact Registry に保存する

Artifact Registry は、プライベート パッケージと Docker コンテナ イメージを 1 か所で管理できる場所として機能します。

このクイックスタートでは、次の方法について説明します。

  • Artifact Registry でプライベート Docker リポジトリを作成する
  • 認証を設定する
  • イメージをリポジトリに push する
  • リポジトリからイメージを pull する

このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、[ガイドを表示] をクリックしてください。

ガイドを表示


始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Artifact Registry API を有効にします。

    API を有効にする

  5. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  6. Google Cloud プロジェクトで課金が有効になっていることを確認します

  7. Artifact Registry API を有効にします。

    API を有効にする

シェルを選択する

このクイックスタートをすべて実行するためには、Cloud Shell またはローカルシェルを使用します。

Cloud Shell
Cloud Shell は、Google Cloud でホストされているリソースを管理するためのシェル環境です。Docker と Google Cloud CLI(Google Cloud の主要なコマンドライン インターフェース)がプリインストールされています。
ローカルシェル
ローカルシェルを使用する場合は、ご利用の環境に Docker と gcloud CLI をインストールする必要があります。

Cloud Shell の起動

Cloud Shell を起動するには、次の手順に従います。

  1. Google Cloud Console に移動します。

    Google Cloud Console

  2. [Cloud Shell をアクティブにする]( )ボタンをクリックします。

コンソールの下部にあるフレーム内で Cloud Shell セッションが開きます。このシェルで gcloud コマンドを実行します。

ローカルシェルの設定

gcloud CLI と Docker をインストールするには、次の手順に従います。

  1. gcloud CLI をインストールします。既存のインストールを更新するには、gcloud components update コマンドを実行します。

  2. Docker をまだインストールしていなければ、インストールします。

  3. 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 はユーザー名です。
  4. ログアウトして再度ログインすると、グループ メンバーシップの変更が反映されます。仮想マシンを使用している場合、メンバーシップの変更を有効にするために、仮想マシンの再起動が必要になることがあります。

  5. Docker が稼働中であることを確認するには、現在の時刻と日付を返す次の Docker コマンドを実行します。

  6. docker run --rm busybox date
    

    --rm フラグは、終了時にコンテナ インスタンスを削除します。

Docker リポジトリを作成する

このクイックスタートのサンプル イメージを保存する Docker リポジトリを作成します。

コンソール

  1. Google Cloud コンソールで [リポジトリ] ページを開きます。

    [リポジトリ] ページを開く

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

  3. リポジトリ名として quickstart-docker-repo を指定します。

  4. 形式として Docker を選択し、モードとして Standard を選択します。

  5. [ロケーション タイプ] で、[リージョン] を選択し、ロケーション us-central1 を選択します。

  6. [作成] をクリックします。

このリポジトリがリポジトリ リストに追加されます。

gcloud

  1. 次のコマンドを実行して、場所 us-central1 に「docker repository」という説明の付いた quickstart-docker-repo という新しい Docker リポジトリを作成します。

    gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \
    --location=us-central1 --description="Docker repository"
    
  2. 次のコマンドを実行して、リポジトリが作成されたことを確認します。

    gcloud artifacts repositories list
    

Artifact Registry コマンドの詳細については、gcloud artifacts コマンドを実行してください。

認証を構成する

イメージを push または pull する前に、Google Cloud CLI を使用して Artifact Registry に対するリクエストを認証します。

リージョン us-central1 の Docker リポジトリの認証を設定するには、次のコマンドを実行します。

gcloud auth configure-docker us-central1-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 のイメージパスは複数の部分から成ります。このサンプル画像の場合:

  • us は、リポジトリの場所です。
  • docker.pkg.dev は、Artifact Registry Docker リポジトリに格納されているコンテナ イメージのホスト名です。
  • google-samples は、リポジトリ ID です。
  • containers/gke/ は、google-samples の下にあるイメージのパスです。

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

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

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

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

次のコマンドを実行して、イメージに quickstart-image:tag1 としてタグ付けします。

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

Where

  • us-central1 は、リポジトリのロケーションです。
  • docker.pkg.dev は、作成した Docker リポジトリのホスト名です。
  • PROJECT は、Google Cloud プロジェクト ID です。 プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
  • quickstart-docker-repo は、作成したリポジトリの ID です。
  • quickstart-image は、リポジトリで使用するイメージ名です。イメージ名は、ローカル イメージ名とは異なる場合があります。このクイックスタートでは、イメージをリポジトリ ID quickstart-docker-repo の直下に保存します。
  • tag1 は Docker イメージに追加するタグです。タグを指定しない場合は、Docker でデフォルトのタグ latest が適用されます。

これで、作成したリポジトリにイメージを push する準備が整いました。

イメージを Artifact Registry に push する

認証を構成してローカル イメージにタグ付けしたら、作成したリポジトリにイメージを push できます。

Docker イメージを push するには、次のコマンドを実行します。

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

PROJECT は、実際の Google Cloud プロジェクト ID に置き換えます。 プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。

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

Artifact Registry からローカルマシンにイメージを pull するには、次のコマンドを実行します。

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

PROJECT は、実際の Google Cloud プロジェクト ID に置き換えます。 プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。

出力は次のようになります。

latest: Pulling from [PROJECT-ID]/quickstart-image:tag1
Digest: sha256:70c42...
Status: Image is up to date for us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1

クリーンアップ

このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。

リポジトリを削除する前に、保持する必要があるイメージが別の場所で使用可能であることを確認してください。

リポジトリを削除するには、次の手順を行います。

コンソール

  1. Google Cloud コンソールで [リポジトリ] ページを開きます。

    [リポジトリ] ページを開く

  2. [リポジトリ] リストで、quickstart-docker-repo リポジトリを選択します。

  3. [削除] をクリックします。

gcloud

quickstart-docker-repo リポジトリを削除するには、次のコマンドを実行します。

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

次のステップ