Azure Container Registryのタスクによるイメージ管理を試す
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
ここでは検証のためにlatest
、v1.0.0
、v1.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 ポータルからは確認できなかったりする点は使いづらさがあるので改善を待ちたいですね。
参考
Discussion