リポジトリ名とイメージ名

Artifact Registry では、API、gclouddocker コマンドを使用してリポジトリを操作するときに、リポジトリとイメージを識別する命名規則が使用されます。

Docker リポジトリ

Docker リポジトリのフルネームは次の形式です。

LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY

ここで

たとえば、次のような特性を持つイメージについて考えてみましょう。

  • リポジトリの場所: us
  • リポジトリの形式: docker
  • リポジトリ名: my-repo
  • プロジェクト ID: my-project

リポジトリは次のように指定されています。

us-docker.pkg.dev/my-project/my-repo

コンテナ イメージ名

コンテナ イメージのフルネームは、次のいずれかの形式になります。

LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE

または

LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE:TAG

または

LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE@IMAGE-DIGEST

ここで

  • LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。
  • PROJECT は、Google Cloud コンソール プロジェクト ID です。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
  • REPOSITORY は、イメージが保存されるリポジトリの名前です。
  • IMAGE は、リポジトリ内のイメージの名前です。
  • TAG は、pull するイメージ バージョンのタグです。
  • IMAGE-DIGEST は、イメージ コンテンツの sha256 ハッシュ値です。Google Cloud コンソールで、メタデータを表示する特定のイメージをクリックします。ダイジェストはイメージのダイジェストとして一覧表示されます。

    タグまたはダイジェストを指定しなかった場合、Artifact Registry はデフォルトのタグ latest が付いたイメージを探します。バージョンの詳細については、コンテナ イメージのバージョンをご覧ください。

たとえば、次のような特性を持つイメージについて考えてみましょう。

  • リポジトリの場所: us
  • リポジトリ名: my-repo
  • プロジェクト ID: my-project
  • イメージ名: test
  • タグ: staging

ステージングでタグ付けされたこのバージョンのイメージは、次のように指定されます。

us-docker.pkg.dev/my-project/my-repo/test:staging

コンテナ イメージのバージョン

リポジトリには多くのコンテナ イメージを含めることができ、これらのイメージはさまざまなバージョンを持つことができます。イメージの特定のバージョンを識別するには、イメージのダイジェストまたはタグを指定します。

ダイジェスト
イメージ ダイジェストは、イメージ インデックスまたはイメージ マニフェストの自動生成ハッシュです。各イメージ ダイジェストはイメージ バージョンの一意の識別子であり、変更できません。ダイジェストは、イメージ コンテンツの sha256 ハッシュ値です。
タグ

イメージタグはラベルであり、多くの場合、v1.1development といった人が読める文字列です。1 つのタグで指定できるのは 1 つのバージョンのイメージのみです。Artifact Registry では、変更可能なイメージタグを許可するように Docker リポジトリを構成できます。また、不変のイメージタグを適用することもできます。

  • 変更可能: タグは 1 つのイメージ バージョンのみを指しますが、参照する特定のダイジェストは変更できます。

    通常は、ビルド時に v1.1 などのバージョン ID でイメージにタグを付けます。ビルドにより複数のバージョンのイメージが同じ v1.1 タグを持つレジストリに push されると、タグはレジストリに push された最後のバージョンのダイジェストを参照します。変更可能なイメージタグはバージョンにラベルを付けるための便利な方法ですが、不正な行為者によってタグを悪意のあるバージョンのイメージに関連付けるように操作される可能性もあります。

  • 不変: リポジトリでは、タグは常に同じイメージ ダイジェストを指します。Artifact Registry リポジトリが不変のイメージタグ用に構成されている場合、次の操作は許可されません。

    • タグ付きイメージを削除する。タグ付けされていないイメージの削除はこれまで通り可能です。
    • タグをイメージから削除する。
    • リポジトリ内の別のバージョンのイメージですでに使用されているタグを使用してイメージを push する。

たとえば、次のような特性を持つイメージについて考えてみましょう。

  • リポジトリの場所: us
  • リポジトリ名: my-repo
  • プロジェクト ID: my-project
  • イメージ名: test
  • タグ: staging
  • ダイジェスト: sha256:4d11e24ba8a615cc85a535daa17b47d3c0219f7eeb2b8208896704ad7f88ae2d

タグでイメージを識別するには、イメージ名に :staging を追加します。

us-docker.pkg.dev/my-project/my-repo/test:staging

ダイジェストで識別するには、イメージ名に @ を追加し、その後にダイジェストを追加します。

us-docker.pkg.dev/my-project/my-repo/test@sha256:4d11e24ba8a615cc85a535daa17b47d3c0219f7eeb2b8208896704ad7f88ae2d

プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。

Console の [イメージ] 画面で、[タグ] 列にイメージのタグが一覧表示されます。イメージのバージョンをクリックすると、メタデータ(イメージ ダイジェストを含む)が表示されます。

タグ付けの詳細については、イメージにタグを付けるをご覧ください。

ドメインをスコープとするプロジェクト

プロジェクトのスコープがドメインに設定されている場合、プロジェクト ID に含まれるドメインの名前の後にコロン(:)が続いています。Docker でのコロンの処理方法の関係で、Artifact Registry でイメージ ダイジェストを指定する場合は、コロン文字をスラッシュで置き換える必要があります。このようなプロジェクトのイメージを指定する場合は、次の形式を使用します。

LOCATION-docker.pkg.dev/DOMAIN/PROJECT-ID/REPOSITORY/IMAGE@IMAGE-DIGEST

たとえば、ID が example.com:my-project のプロジェクトには、次のイメージが含まれる場合があります。

us-docker.pkg.dev/example.com/my-project/my-repo/image-name

URL としてのリポジトリ名

Google Cloud コンソールでリポジトリやリポジトリ内のアーティファクトにアクセスするには、そのフルネームの前に https:// を付けます。

たとえば、リポジトリ us-maven.pkg.dev/my-project/my-repo を表示するには、次の URL を使用します。

https://us-maven.pkg.dev/my-project/my-repo

イメージ us-docker.pkg.dev/example.com/my-project/my-repo/my-image を表示するには、次の URL を使用します。

https://us-docker.pkg.dev/example.com/my-project/my-repo/my-image

リポジトリへのアクセス権限を持つ認証済みのユーザーであれば、これらのリンクを使用できます。