Azure コンテナー レジストリのコンテナー イメージをロックする

Azure コンテナー レジストリでは、イメージ バージョンまたはリポジトリをロックして、削除や更新ができないようにすることができます。 イメージまたはリポジトリをロックするには、Azure CLI コマンド az acr repository update を使用して、その属性を更新します。

この記事では、Azure CLI を Azure Cloud Shell またはローカルで実行する必要があります (バージョン 2.0.55 以降を推奨)。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

重要

この記事は、Azure portal の [設定] > [ロック] 、または Azure CLI で az lock コマンドを使用するレジストリ全体のロックには適用されません。 レジストリ リソースをロックしても、レポジトリ内のデータの作成、更新、または削除は実行できます。 レジストリのロックは、レプリケーションの追加や削除、あるいはレジストリ自体の削除などの管理操作にのみ影響します。 詳細については、「リソースのロックによる予期せぬ変更の防止」を参照してください。

シナリオ

既定では、Azure Container Registry のタグ付けされたイメージは 変更可能 であるため、適切なアクセス許可で、同じタグのイメージを定期的に更新し、レジストリにプッシュすることができます。 必要に応じて、コンテナー イメージを削除することもできます。 この動作は、イメージを開発し、レジストリのサイズを維持する必要がある場合に役立ちます。

しかし、コンテナー イメージを運用環境にデプロイするときに、不変の コンテナー イメージが必要になる場合があります。 不変のイメージとは、誤って削除や上書きできないものです。

レジストリでのタグ付けとイメージ作成の方法については、「コンテナー イメージのタグ付けとバージョン管理に関する推奨事項」を参照してください。

az acr repository update コマンドを使用してリポジトリ属性を設定することで、以下のことが可能になります。

  • イメージ バージョン、またはリポジトリ全体をロックする

  • イメージ バージョンまたはリポジトリを削除されないようにするが、更新は許可する

  • イメージ バージョン、またはリポジトリ全体で読み取り (プル) 操作ができないようにする

例については、次のセクションを参照してください。

イメージまたはリポジトリをロックする

リポジトリの現在の属性を表示する

リポジトリの現在の属性を表示するには、次の az acr repository show コマンドを実行します。

az acr repository show \
    --name myregistry --repository myrepo \
    --output jsonc

現在のイメージの属性を表示する

タグの現在の属性を表示するには、次の az acr repository show コマンドを実行します。

az acr repository show \
    --name myregistry --image image:tag \
    --output jsonc

タグでイメージをロックする

myregistrymyrepo/myimage:tag イメージをロックするには、次の az acr repository update コマンドを実行します。

az acr repository update \
    --name myregistry --image myrepo/myimage:tag \
    --write-enabled false

マニフェスト ダイジェストでイメージをロックする

マニフェスト ダイジェスト (sha256:... として表される、SHA-256 ハッシュ) で識別された myrepo/myimage イメージをロックするには、次のコマンドを実行します (1 つまたは複数のイメージ タグに関連付けられているマニフェスト ダイジェストを見つけるには、az acr repository show-manifests コマンドを実行します)。

az acr repository update \
    --name myregistry --image myrepo/myimage@sha256:123456abcdefg \
    --write-enabled false

リポジトリをロックする

myrepo/myimage リポジトリと、それに含まれるすべてのイメージをロックするには、次のコマンドを実行します。

az acr repository update \
    --name myregistry --repository myrepo/myimage \
    --write-enabled false

イメージやリポジトリが削除されないようにする

イメージが削除されないようにする

myrepo/myimage:tag イメージの更新は許可するが、削除は許可しない場合は、次のコマンドを実行します。

az acr repository update \
    --name myregistry --image myrepo/myimage:tag \
    --delete-enabled false --write-enabled true

リポジトリが削除されないようにする

次のコマンドで myrepo/myimage リポジトリを設定し、削除できないようにします。 個々のイメージは引き続き、更新したり、削除したりすることができます。

az acr repository update \
    --name myregistry --repository myrepo/myimage \
    --delete-enabled false --write-enabled true

イメージまたはリポジトリに対する読み取り操作ができないようにする

myrepo/myimage:tag イメージに対する読み取り (プル) 操作ができないようにするには、次のコマンドを実行します。

az acr repository update \
    --name myregistry --image myrepo/myimage:tag \
    --read-enabled false

myrepo/myimage:tag リポジトリ内のすべてのイメージに対する読み取り操作ができないようにするには、次のコマンドを実行します。

az acr repository update \
    --name myregistry --repository myrepo/myimage \
    --read-enabled false

イメージまたはリポジトリのロックを解除する

myrepo/myimage:tag イメージの既定の動作を復元し、削除と更新ができるようにするには、次のコマンドを実行します。

az acr repository update \
    --name myregistry --image myrepo/myimage:tag \
    --delete-enabled true --write-enabled true

myrepo/myimage:tag リポジトリとすべてのイメージの既定の動作を復元し、削除と更新ができるようにするには、次のコマンドを実行します。

az acr repository update \
    --name myregistry --repository myrepo/myimage \
    --delete-enabled true --write-enabled true

次のステップ

この記事では、az acr repository update コマンドを使用して、リポジトリ内のイメージ バージョンの削除や更新ができないようにする方法を学習しました。 追加の属性を設定する場合は、az acr repository update コマンドのリファレンスを参照してください。

イメージ バージョンまたはリポジトリに対して設定された属性を確認するには、az acr repository show コマンドを使用します。

削除操作の詳細については、「Azure Container Registry のコンテナー イメージを削除する」を参照してください。