コンテナのメタデータを管理する

このページでは、アタッチメントとして Artifact Registry に保存されたコンテナ イメージに関するメタデータをコンテナ化し、Artifact Registry にアップロードして管理する方法について説明します。

アタッチメントは OCI アーティファクトになります。これは、Docker 形式のリポジトリにのみ保存できます。

始める前に

  1. Docker 形式の標準リポジトリを作成します(まだ作成していない場合)。
  2. (省略可)Google Cloud CLI コマンドのデフォルトを構成します。

必要なロール

アタッチメントの管理に必要な権限を取得するには、リポジトリに対する次の IAM ロールの付与を管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

Oras を設定する(省略可)

gcloud CLI の使用に加え、必要に応じて Oras を使用してアタッチメントを作成、一覧表示、ダウンロードすることもできます。

  1. Oras 1.2 以降をインストールします。バージョンを確認するには、oras version コマンドを実行します。

  2. Artifact Registry で認証するように Oras を構成します。

アタッチメントを作成する

アタッチメントは、gcloud CLI または Oras を使用して作成できます。

gcloud

後述のコマンドデータを使用する前に、次のように置き換えます。

  • ATTACHMENT: アタッチメントの完全修飾名。例: projects/my-project/locations/us-west1/repositories/my-repo/attachments/my-attachment。または、アタッチメント ID のみを指定して、--location フラグと --repository フラグを使用します。
  • TARGET: アタッチメントが参照するアーティファクトの完全修飾バージョン名または Artifact Registry URI。ダイジェストまたはタグのいずれかを使用できます。例: us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1
  • TYPE: アタッチメントの type 属性。これは、artifactType プロパティの OCI 仕様に準拠している必要があります。
  • ATTACHMENT_NAMESPACE: アタッチメントのデータソースを識別するアタッチメントに固有の変数。例: example.com
  • FILES: アタッチメントに含めるローカル ファイルのカンマ区切りのリスト。
    • 次のコマンドを実行します。

      Linux、macOS、Cloud Shell

      gcloud artifacts attachments create ATTACHMENT \
          --target=TARGET \
          --type=TYPE \
          --attachment-namespace=ATTACHMENT_NAMESPACE \
          --files=FILES

      Windows(PowerShell)

      gcloud artifacts attachments create ATTACHMENT `
          --target=TARGET `
          --type=TYPE `
          --attachment-namespace=ATTACHMENT_NAMESPACE `
          --files=FILES

      Windows(cmd.exe)

      gcloud artifacts attachments create ATTACHMENT ^
          --target=TARGET ^
          --type=TYPE ^
          --attachment-namespace=ATTACHMENT_NAMESPACE ^
          --files=FILES
      詳細については、gcloud artifacts attachments create コマンドをご覧ください。

Oras

Oras でアタッチメントを作成するときに、Artifact Registry は、アタッチメント名として使用するランダムな UUID を生成します。

コマンドを実行する前に、次のように置き換えます。

  • ARTIFACT_TYPE: アタッチメントの artifactType

  • IMAGE_URI: アタッチメントが参照するイメージ コンテナの URI。

  • FILE: アタッチメントのメタデータとして含めるローカル ファイル。

  • MEDIA_TYPE: レイヤの mediaType

  oras attach --artifact-type ARTIFACT_TYPE IMAGE_URI FILE:MEDIA_TYPE

次の例では、URI とタグで識別されるコンテナ イメージ my-image を参照するファイル hello-world.txt で構成されたアタッチメントを作成します。

  oras attach --artifact-type doc/example \
  us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1 \
  hello-world.txt:application/vnd.me.hi

ここで

  • doc/example は、アタッチメントの artifactType プロパティを定義します。

  • us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1 は、アタッチメントが参照するコンテナ イメージ バージョンのタグを含む URI です。

  • hello-world.txt は、アタッチメントがデータとして保持するローカル ファイルです。

  • application/vnd.me.hi は、レイヤの mediaType を定義します。

ガイドの全文とその他の例については、oras attach のドキュメントをご覧ください。

リストの添付ファイル

コンテナ イメージには、そのイメージを参照するアタッチメントを任意の数で追加できます。アタッチメントを一覧表示するには、Google Cloud コンソール、gcloud CLI、または Oras を使用します。

コンソール

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

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

  2. リポジトリ名をクリックして、リポジトリ内のイメージを表示します。

  3. イメージのバージョンを表示するには、イメージ名をクリックします。

  4. 該当するイメージ バージョンをクリックします。

  5. そのバージョンのアタッチメントを表示するには、[アタッチメント] タブをクリックします。

gcloud

後述のコマンドデータを使用する前に、次のように置き換えます。

  • TARGET: アタッチメントを一覧表示するアーティファクトの完全修飾バージョン名または Artifact Registry URI。ダイジェストまたはタグのいずれかを使用できます。例: us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1

次のコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud artifacts attachments list \
    --target=TARGET

Windows(PowerShell)

gcloud artifacts attachments list `
    --target=TARGET

Windows(cmd.exe)

gcloud artifacts attachments list ^
    --target=TARGET
詳細については、gcloud artifacts attachments list コマンドをご覧ください。

Oras

コマンドを実行する前に、次のように置き換えます。

  • IMAGE_URI: リスト内のアタッチメントが参照するターゲット イメージの URI。
oras discover --distribution-spec v1.1-referrers-api IMAGE_URI

次の例では、URI とタグで識別されるコンテナ イメージ my-image のアタッチメントを一覧表示します。

oras discover --distribution-spec v1.1-referrers-api \
us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1

ここで

  • v1.1-referrers-api は、使用される Referrer API です。詳細については、ディストリビューション仕様をご覧ください。

  • us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1 は、アタッチメントを一覧表示するコンテナ イメージ バージョンのタグを含む URI です。

ガイドの全文とその他の例については、oras discover のドキュメントをご覧ください。

アタッチメントをダウンロード

アタッチメントをダウンロードするには、gcloud CLI または Oras を使用します。

gcloud

後述のコマンドデータを使用する前に、次のように置き換えます。

  • ATTACHMENT: アタッチメントの完全修飾名。例: projects/my-project/locations/us-west1/repositories/my-repo/attachments/my-attachment。または、アタッチメント ID のみを指定して、--location フラグと --repository フラグを使用することもできます。
  • DESTINATION: アタッチメントをダウンロードするローカル ファイル システム内のパス。

次のコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud artifacts attachments download ATTACHMENT \
    --destination=DESTINATION

Windows(PowerShell)

gcloud artifacts attachments download ATTACHMENT `
    --destination=DESTINATION

Windows(cmd.exe)

gcloud artifacts attachments download ATTACHMENT ^
    --destination=DESTINATION
ATTACHMENT を指定する代わりに、--oci-version-name フラグに続けてアタッチメントの完全なバージョン名または Artifact Registry URI を指定できます。ダイジェストまたはタグのいずれかを使用できます。例: projects/my-project/locations/us-west1/repositories/my-repo/packages/my-package/versions/sha256:abc123

詳細については、gcloud artifacts attachments download コマンドをご覧ください。

Oras

コマンドを実行する前に、次のように置き換えます。

  • DESTINATION: アタッチメントの宛先ディレクトリ。

  • ATTACHMENT_URI: ダウンロードするアタッチメントの URI。これは、アタッチメントが参照するイメージ コンテナの URI で、アタッチメントの一意の SHA が続きます。

oras pull -o DESTINATION ATTACHMENT_URI

次の例では、URI とダイジェストで識別されるアタッチメントをダウンロードします。

oras pull -o . us-west1-docker.pkg.dev/my-project/my-repo/my-image@sha256:xxxx

ここで

  • -o . は、現在のディレクトリをダウンロード先として指定します。

  • us-west1-docker.pkg.dev/my-project/my-repo/my-image@sha256:xxxx は、ダウンロードするアタッチメントのダイジェストを含むイメージ URI です。

ガイドの全文とその他の例については、oras pull のドキュメントをご覧ください。

アタッチメントの削除

アタッチメントは、Google Cloud コンソールまたは gcloud CLI を使用して直接削除できます。アタッチメントを間接的に削除するには、参照先のコンテナ イメージを削除します。

アタッチメントを直接削除する

アタッチメントを直接削除するには、次のいずれかの方法を使用します。

コンソール

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

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

  2. リポジトリ名をクリックして、リポジトリ内のイメージを表示します。

  3. イメージ名をクリックすると、そのイメージのバージョンが表示されます。

  4. アタッチメントを表示するイメージのバージョンをクリックします。

  5. [アタッチメント] タブをクリックして、そのアタッチメントのバージョンを表示します。

  6. 削除するアタッチメントのダイジェストをクリックします。

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

  8. 確認ダイアログで [削除] をクリックします。

gcloud

後述のコマンドデータを使用する前に、次のように置き換えます。

  • ATTACHMENT: アタッチメントの完全修飾名。例: projects/my-project/locations/us-west1/repositories/my-repo/attachments/my-attachment。または、アタッチメント ID のみを指定して、--location フラグと --repository フラグを使用することもできます。

次のコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud artifacts attachments delete ATTACHMENT

Windows(PowerShell)

gcloud artifacts attachments delete ATTACHMENT

Windows(cmd.exe)

gcloud artifacts attachments delete ATTACHMENT
詳細については、gcloud artifacts attachments list コマンドをご覧ください。

アタッチメントを間接的に削除する

コンテナ イメージが削除されると、参照しているアタッチメントもすべて削除されます。これは、コンテナ イメージの手動削除とクリーンアップ ポリシーによる削除の両方に適用されます。