イメージの管理には、リポジトリ内のイメージの一覧表示、タグの追加、タグの削除、新しいリポジトリへのイメージのコピー、イメージの削除が含まれます。
ローカルイメージを Container Registry に push する方法、または Container Registry に保存されているイメージを pull する方法については、イメージの push と pull をご覧ください。
始める前に
次のことを確認してください。
プロジェクトで Container Registry を有効にしていること。
レジストリに対する認証を行うように Docker を構成済みであること。
レジストリにアクセスするための権限を付与されていること。
ストレージの場所ごとのイメージの一覧表示
特定のホストの場所にあるイメージを一覧表示するには、Google Cloud Console またはコマンドラインを使用できます。
コンソール
いずれかのホストの場所にイメージを表示するには:
[Container Registry] ページに移動
[名前] の上のセレクタを使用して、ホストの場所を選択します。オプションには、[すべての場所]、プロジェクトで現在使用しているホストの名前(gcr.io、us.gcr.io、eu.gcr.io、asia.gcr.io)があります。
gcloud
いずれかのホストの場所にあるイメージを一覧表示するには、次のコマンドを使用します。
gcloud container images list --repository=[HOSTNAME]/[PROJECT-ID]
ここで
[HOSTNAME]
は、Console でLocation
の下に表示されます。gcr.io
、us.gcr.io
、eu.gcr.io
、asia.gcr.io
の 4 つのうち、いずれかのオプションになります。[PROJECT-ID]
は、Google Cloud Console プロジェクト ID です。プロジェクト ID にコロン(:
)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
ネストされたレジストリがある場合、ネストされたイメージを一覧表示するには、格納されているリポジトリ レベルを指定します。
gcloud container images list --repository=[HOSTNAME]/[PROJECT-ID]/[IMAGE]
ここで、[IMAGE]
は、さらに多くのイメージがネストされているリポジトリです。
gcloud container images list
のドキュメントも参照してください。
イメージのバージョンの一覧表示
レジストリにはさまざまなバージョンのイメージが含まれている可能性があります。こうしたバージョンには同じイメージ名があり、ダイジェストとタグで識別されます。
Console
イメージのダイジェストとタグを表示するには:
[Container Registry] ページに移動
イメージ名をクリックすると、そのイメージのバージョンが表示されます。切り捨てられたダイジェストは [名前] に一覧表示され、タグは [タグ] の下に一覧表示されます。
完全なダイジェストを取得するには、イメージのバージョンをクリックしてそのメタデータを表示します。ダイジェストはイメージのダイジェストと呼ばれます。
gcloud
イメージの切り捨てられたダイジェストとタグを表示するには、次のコマンドを実行します。
gcloud container images list-tags [HOSTNAME]/[PROJECT-ID]/[IMAGE]
ここで
[HOSTNAME]
は、Console でLocation
の下に表示されます。gcr.io
、us.gcr.io
、eu.gcr.io
、asia.gcr.io
の 4 つのうち、いずれかのオプションになります。[PROJECT-ID]
は、Google Cloud Console プロジェクト ID です。プロジェクト ID にコロン(:
)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。[IMAGE]
は、Container Registry 内のイメージ名です。
特定のイメージの完全なダイジェストを一覧表示するには、次のコマンドを実行します。
gcloud container images list-tags --format='get(digest)' [HOSTNAME]/[PROJECT-ID]/[IMAGE]
gcloud container images list-tags
のドキュメントをご覧ください。
イメージにタグを付ける
イメージにタグを追加するには、Google Cloud Console またはコマンドラインを使用できます。
ダイジェストは、イメージのバージョンに自動的に生成される一意の識別子です。タグは、イメージの特定のバージョンに適用できるラベルとして機能します。
1 つのイメージに複数のタグを追加できます。リポジトリ内で、イメージのタグはそれぞれ一意である必要があります。たとえば、タグ release-candidate
をイメージの 9 番目のバージョンに追加した場合、同じタグを 10 番目のバージョンに追加すると、9 番目のバージョンから 10 番目のバージョンにタグが移動します。
イメージにタグ付けしない場合、Docker クライアントはデフォルトのタグ latest
を追加します。つまり、latest
はイメージの最新バージョンを示すわけではありません。そうではなく、latest
として明示的にタグ付けしたイメージのバージョン、またはイメージのタグ付けされていない最新のバージョンを意味します。latest
の意味が不明瞭なため、latest
タグには依存しないことをおすすめします。
コンソール
Container Registry でホストされているイメージにタグを付けるには:
[Container Registry] ページに移動
イメージ名をクリックすると、そのイメージのバージョンが表示されます。
[タグ] で、編集アイコンをクリックします。
フィールドに新しいタグを入力し、[保存] をクリックします。
gcloud
Container Registry でホストされるイメージにタグを付けるには、gcloud
container images add-tag
コマンドを使用します。
gcloud container images add-tag \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG] \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[NEW_TAG]
または
gcloud container images add-tag \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST] \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[NEW_TAG]
ここで
[HOSTNAME]
は、Console でLocation
の下に表示されます。gcr.io
、us.gcr.io
、eu.gcr.io
、asia.gcr.io
の 4 つのうち、いずれかのオプションになります。[PROJECT-ID]
は、Google Cloud Console プロジェクト ID です。プロジェクト ID にコロン(:
)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。[IMAGE]
は、Container Registry 内のイメージ名です。[TAG]
はすでにイメージに適用されているタグです。[IMAGE_DIGEST]
は、イメージ コンテンツの sha256 ハッシュ値です。[NEW_TAG]
はイメージに追加する新しいタグです。
このコマンドの詳細については、gcloud container images add-tag
をご覧ください。
ローカル イメージに Container Registry でホストするためのタグを付ける
ローカル イメージを Container Registry に push するには、最初にレジストリ名にタグ付けしてからイメージを push する必要があります。手順については、イメージをレジストリに push するをご覧ください。
イメージのタグを外す
Container Registry 内のイメージからタグを削除するには、Google Cloud Console またはコマンドラインを使用できます。
コンソール
[Container Registry] ページに移動
イメージ名をクリックすると、そのイメージのバージョンが表示されます。
[タグ] で、編集アイコンをクリックします。
タグを削除して [保存] をクリックします。
gcloud
イメージからタグを削除するには、次のコマンドを使用します。
gcloud container images untag [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
ここで
[HOSTNAME]
は、Console でLocation
の下に表示されます。gcr.io
、us.gcr.io
、eu.gcr.io
、asia.gcr.io
の 4 つのうち、いずれかのオプションになります。[PROJECT-ID]
は、Google Cloud Console プロジェクト ID です。プロジェクト ID にコロン(:
)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。[IMAGE]
は、Container Registry 内のイメージ名です。[TAG]
は削除するタグです。このコマンドの詳細については、
gcloud container images untag
をご覧ください。
イメージを新しいレジストリにコピーする
コマンドラインを使用して、1 つのリポジトリから別のリポジトリにイメージをコピーできます。その際、両方のリポジトリにアクセスできる必要があります。
1 つのリポジトリから別のリポジトリにイメージをコピーするには、gcloud
container images add-tag
コマンドを使用しています。その際、移動するイメージをタグで特定します。
gcloud container images add-tag \
[SOURCE_HOSTNAME]/[SOURCE_PROJECT-ID]/[SOURCE_IMAGE]:[SOURCE_TAG] \
[DESTINATION_HOSTNAME]/[DESTINATION_PROJECT-ID]/[DESTINATION_IMAGE]:[DESTINATION_TAG]
またはダイジェストによって移動するイメージを指定します。
gcloud container images add-tag \
[SOURCE_HOSTNAME]/[SOURCE_PROJECT-ID]/[SOURCE_IMAGE]@[IMAGE_DIGEST] \
[DESTINATION_HOSTNAME]/[DESTINATION_PROJECT-ID]/[DESTINATION_IMAGE]:[DESTINATION_TAG]
ここで、移動元と移動先の両方で
[HOSTNAME]
は、イメージがホストされている場所です。gcr.io
、us.gcr.io
、eu.gcr.io
、asia.gcr.io
の 4 つのうち、いずれかのオプションになります。[PROJECT-ID]
は、Google Cloud Console プロジェクト ID です。プロジェクト ID にコロン(:
)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。[IMAGE]
は、Container Registry 内のイメージ名です。[IMAGE_DIGEST]
は、イメージ コンテンツの sha256 ハッシュ値です。[TAG]
は、移動するソースイメージを識別するタグ、または移動先リポジトリのイメージに適用するタグです。
たとえば、my-image
イメージを別のプロジェクトのリポジトリとヨーロッパのホストにコピーするものの、同じイメージ名とタグを保持する場合は、以下のコマンドを使用します。
gcloud container images add-tag \
gcr.io/[PROJECT-ID]/my-image:tag1 \
eu.gcr.io/[OTHER-PROJECT-ID]/my-image:tag1
[PROJECT-ID]
と [OTHER-PROJECT-ID]
は、それぞれコピー元プロジェクト、コピー先プロジェクトの Google Cloud Console プロジェクト ID です。こうしたプロジェクトの両方のリポジトリにアクセスできる必要があります。プロジェクト ID のいずれかにコロン(:
)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
このコマンドの詳細については、gcloud container images add-tag
をご覧ください。
画像の削除
イメージを削除するには、Google Cloud Console またはコマンドラインを使用できます。削除したイメージを元に戻すことはできません。
未使用のイメージの管理に役立つその他のツールもあります。たとえば、gcr-cleaner ツールは、さまざまな基準に基き、古いイメージを見つけて削除します。未使用のイメージを削除すると、ストレージ コストを削減できます。gcr-cleaner
ツールは Google の公式プロダクトではありません。
Google Cloud Console または gcloud CLI からイメージを削除するには:
コンソール
[Container Registry] ページに移動
イメージ名をクリックすると、そのイメージのバージョンが表示されます。
レジストリで、削除するイメージのバージョンの横にあるチェックボックスをオンにします。
ページの上部にある [削除] をクリックします。
[リポジトリ アイテムの削除] ポップアップで、[削除] をクリックします。
gcloud
次のいずれかのコマンドを実行します。
ダイジェストによって識別されるイメージ:
gcloud container images delete [HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST]
タグによって識別されたイメージ。複数のタグがあります:
gcloud container images delete [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG] --force-delete-tags
ここで
[HOSTNAME]
は、Console でLocation
の下に表示されます。gcr.io
、us.gcr.io
、eu.gcr.io
、asia.gcr.io
の 4 つのうち、いずれかのオプションになります。[PROJECT-ID]
は、Google Cloud Console プロジェクト ID です。プロジェクト ID にコロン(:
)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。[IMAGE]
は、Container Registry 内のイメージ名です。[IMAGE_DIGEST]
は、イメージ コンテンツの sha256 ハッシュ値です。[TAG]
は削除するイメージのタグです。
このコマンド詳細については、gcloud container images delete
をご覧ください。