😺

Azure Container Registryのタスクによるイメージ管理を試す

2024/09/26に公開

Azure Container Registry(ACR)は Docker コンテナイメージやその他の OCI(Open Container Initiative)準拠のアーティファクトを保存、管理できる Azure のプライベートレジストリサービスです。
ACR では、イメージのバージョニングや不要なイメージのクリーンアップが非常に重要です。
本記事では、Azure Container Registry の「タスク」という機能を利用したイメージの管理方法を実際に試してみたいと思います。

Azure Container Registry リソースの作成

まず、Azure Container Registry リソースを作成しておきます。

# リソースグループ名
RG_NAME=""
# Azure Container Registryのリソース名
ACR_NAME=""

# リソースグループの作成
az group create --name "${RG_NAME}" --location japaneast

# Azure Container Registryの作成
az acr create --resource-group "${RG_NAME}" --name "${ACR_NAME}" --sku Basic

イメージの Push

作成した Azure Container Registry リソースにイメージを Push します。

# Azure Container Registryの認証を通す
az acr login --name "${ACR_NAME}"

# イメージのpush
docker push ${ACR_NAME}.azurecr.io/test-app:latest

ここでは検証のためにlatestv1.0.0v1.0.0-preview、適当なコミットハッシュをタグとしたイメージを複数 Push しておきます。

acr purgeコマンド

acr purgeコマンドを利用することで、Azure Container Registry で管理されているイメージをまとめて削除できます。
例えば、以下のコマンドでvから始まらないイメージを一括で削除するといったシナリオに対応できます。

az acr run --registry "${ACR_NAME}" --cmd 'acr purge --ago 0d --untagged --filter "test-app:^((?!v.)).*$"' /dev/null

タスクを利用したイメージの削除

上記のacr purgeコマンドをタスクとして登録することで、週次でイメージを削除するといったことができます。

以下のコマンドでScheduledPurgeTaskという名前でタスクを作成します。
このタスクでは毎週月曜日の午前 10 時に先ほどのコマンドを実行するものです。

az acr task create \
      --name "ScheduledPurgeTask" \
      --cmd 'acr purge --ago 0d --untagged --filter "test-app:^((?!v.)).*$"' \
      --schedule "0 10 * * 1" \
      --registry "${ACR_NAME}" \
      --context /dev/null

タスクの作成に成功すると Azure ポータルのタスクでも確認ができます。

タスクの実行ログも以下のように確認できます。

まとめ

本記事では、Azure Container Registry のタスク機能を利用したイメージの管理方法を試してみました。
Azure Container Registry では保持ポリシーを利用したイメージ管理も行えますが、「Premium」プランのリソースが必要だったりするのでタスクが有効な場面もあると思います。

作成したタスクのコマンドの確認などが Azure ポータルからは確認できなかったりする点は使いづらさがあるので改善を待ちたいですね。

参考

https://learn.microsoft.com/ja-jp/azure/container-registry/container-registry-tasks-scheduled

https://learn.microsoft.com/ja-jp/azure/container-registry/container-registry-auto-purge

Discussion