コンテナイメージを本番環境にデプロイする際は、タグ付けされたイメージが後続のプッシュによって静かに置き換えられないよう、十分な対策が必要です。イメージタグの不変性(Immutable)を有効化すると、既存のタグが一切上書きできなくなります。既存のタグを対象にプッシュを実行した場合、ACR はエラー The requested tag already exists and cannot be overwritten. を返してそのリクエストを拒否します。
イメージタグの不変性は、リポジトリ単位で設定されます。latest タグは例外であり、不変性が有効化されていても引き続き上書き可能です。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
ACR Enterprise Edition のインスタンス
そのインスタンス内に作成済みのリポジトリ
イメージタグの不変性を有効化する
Container Registry コンソール にログインします。
画面上部のナビゲーションバーから、ご利用のリージョンを選択します。
左側のナビゲーションウィンドウで、インスタンス をクリックします。
インスタンス ページで、管理対象の Enterprise Edition インスタンスをクリックします。
左側のナビゲーションウィンドウで、リポジトリ > リポジトリ の順に選択します。
リポジトリ ページで、設定対象のリポジトリを検索し、管理 をクリックします(操作 列)。
リポジトリ詳細ページで、編集 をクリックします(詳細 セクション)。
設定の変更 ダイアログボックスで、不変 を選択し、確認 をクリックします。
説明イメージタグの不変性を無効化するには、不変 のチェックを解除します。
イメージタグの不変性を確認する
latest以外のタグを付与したイメージをリポジトリにプッシュします。docker push example-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/example:v1同一タグを使用して別のイメージをプッシュします。
以下のエラーが表示され、プッシュは拒否されます。
The requested tag already exists and cannot be overwritten.latestタグを付与したイメージをプッシュします。docker push example-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/example:latestlatestタグを使用して別のイメージをプッシュします。プッシュは成功し、以前の
latestイメージが上書きされます。これにより、latestタグが不変性の適用対象外であることが確認できます。不変 のチェックボックスを解除して、イメージタグの不変性を無効化します。
ステップ 1 と同じ
latest以外のタグを用いて、別のイメージをプッシュします。プッシュは成功し、以前のイメージが上書きされます。これにより、不変 のチェックを解除することで通常のプッシュ動作が復元されることが確認できます。