コンテナのコンセプト

このドキュメントでは、レジストリ、リポジトリ、アーティファクトなど、コンテナに関連した重要なコンセプトについて説明します。これらのコンセプトが Artifact Registry にどのように適用されるかに関する基本情報も含まれています。

レジストリ

レジストリでは、リポジトリ内で名前ごとにまとめられたコンテナ イメージとアーティファクトを保存し、配布しています。レジストリには、単一のリポジトリでも複数のリポジトリでも含めることができます。また公開することも非公開にすることもできます。

Docker Hub や Artifact Registry などのレジストリ サービスには、公開リポジトリまたは非公開リポジトリを作成するオプションが用意されています。公開イメージを pull する場合は、セキュリティに関するあらゆる懸念を理解することが重要です。脆弱性モニタリングと依存関係のフットプリントの削減の詳細については、依存関係の管理をご覧ください。

レジストリは、個々のコンテナ イメージを格納するリポジトリにまとめられます。Artifact Registry を使用すると、単一のプロジェクト内に複数のリポジトリを作成し、各リポジトリに特定のリージョンのロケーションを関連付けることができます。関連するリポジトリはラベルでグループ化できます。

Artifact Registry リポジトリとイメージ管理

Artifact Registry Docker 形式のリポジトリでは、名前が異なる複数のコンテナ イメージを同じリポジトリに保存できます。イメージの各バージョンは、イメージのダイジェストで識別され、タグに関連付けることができます。タグは変更可能または変更不可にできます。コンテナ イメージのバージョンとタグの詳細については、コンテナ イメージのバージョンをご覧ください。

Artifact Registry では通常、プロジェクト、リージョンのロケーション、イメージの名前を識別するために、イメージのパスの一部を参照し、タグまたはマニフェスト ダイジェストを使用して正しいバージョンを識別します。

例:

docker push u-france-east1-docker.s3nsregistry.fr/PROJECT/quickstart-docker-repo/quickstart-image:tag1

  • u-france-east1 は、リポジトリの場所です。
  • docker.s3nsregistry.fr は、Docker 形式のリポジトリのホスト名です。
  • PROJECT は、Cloud de Confiance by S3NS プロジェクト ID によって作成された Namespace です。
  • quickstart-docker-repo は、イメージを保存するプロジェクトの Namespace です。Artifact Registry では、パスのこの部分をリポジトリと呼んでいます。
  • quickstart-imagequickstart-image のすべてのバージョンの名前であり、多くの場合はイメージと呼ばれています。
  • tag1 は、イメージのバージョンを指定するタグです。

画像

アーティファクトとイメージはどちらも Artifact Registry 内に保存できます。アーティファクトは、テキスト ファイル、Docker イメージ、Helm チャートなど、さまざまなものがありますが、イメージは通常、コンテナ イメージを指します。コンテナ イメージは、あらゆる環境で実行するために必要なすべての要素を含むソフトウェアのパッケージです。詳細については、コンテナとはをご覧ください。

イメージがリポジトリに push またはアップロードされ、リポジトリから pull またはダウンロードされます。正しいイメージとバージョンを指定するには、一意のレジストリとアーティファクトを指定する必要があります。

Artifact Registry のリポジトリ名とイメージ名の詳細については、リポジトリとイメージ名をご覧ください。

レイヤ

リポジトリに保存されるコンテナ イメージは、レイヤを使用して段階的に作成されます。一部の同じレイヤは異なるイメージで使用できます。レイヤはイメージのタイプに応じてさまざまな方法で定義されます。たとえば、Dockerfile の各命令は Docker イメージ内のレイヤに対応します。レジストリ内では、共通レイヤを持つイメージがこれらのレイヤを共有するため、ストレージ効率が向上します。セキュリティ上、異なるレジストリ間でレイヤが共有されることはありません。

コンテナ イメージを削除しても、レイヤがすぐに削除されるわけではありません。レジストリ内のイメージで参照されていないレイヤは毎日削除されます。

タグ

ユーザーは、イメージをリポジトリに push または pull するときにイメージのバージョンを指定するためにタグを追加します。イメージには 1 つまたは複数のタグを含めるか、タグをまったく含めません。可変タグを使用していて、同じタグでイメージを 2 回 push すると、タグは最初のイメージから削除されて 2 番目のイメージに移り、最初のイメージはタグなしで残されます。タグ付けされていないイメージには、マニフェスト ダイジェストを使用して引き続きアクセスできます。

不変のタグを使用している場合、次の操作は許可されません。

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

latest タグは、タグなしでイメージが push されたときに追加される特殊なタグです。

例:

docker push u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/hello-app

イメージを hello-app:latest に push します。

docker pull u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/hello-app

イメージ hello-app:latest を pull します。

latest 以外のタグが付いたリポジトリにイメージが push されるときに、latest タグが追加されないため、latest イメージが最新の変更より古い場合があります。リリースには latest 以外のタグを使用することをおすすめします。

マニフェスト

イメージ マニフェストは、各イメージ内のレイヤを一意に識別および指定します。マニフェストは、マニフェスト ダイジェストと呼ばれる一意の SHA-256 ハッシュで識別されます。マニフェスト ダイジェストはタグよりも信頼性と安全性が高くなります。これは、変更可能なタグを持つリポジトリでは、同じイメージの複数のバージョンを同じタグに push でき、一部のイメージはタグなしで残されますが、各イメージがマニフェスト ダイジェストで一意に指定されるためです。

ツールを使用してイメージをスキャンまたは分析する場合、これらのツールの結果はスキャンされたイメージに対してのみ有効です。タグで参照されるイメージは変更される可能性があるため、確実にスキャンされたイメージをデプロイするには、タグを使用することはできません。

Artifact Registry 固有のタグ付けとマニフェストについて詳しくは、イメージの管理コンテナ イメージの使用をご覧ください。

次のステップ