☁️
ACR上のイメージのサイズを知る(memo)
はじめに
Azure Container Registry (ACR) のDockerイメージサイズを確認するPythonスクリプトです。Azure Portalでは直接サイズが表示されないため、Azure CLIを使って取得します。マルチアーキテクチャイメージにも対応しています。
スクリプトは以下のGistからダウンロードできます:
https://gist.github.com/hideki5123/c64c29d51614bfa78b5b81d5b44657b3
curlで直接実行することも可能です:
curl -s https://gist.github.com/hideki5123/c64c29d51614bfa78b5b81d5b44657b3/raw/get_acr_image_size.py | python3 - -r myacr -n sample-app -t latest
前提条件
- Azure CLIがインストール済みで
az login完了 - Python 3.7以上
スクリプトの機能
このスクリプトは以下の機能を提供します:
-
ACRマニフェスト取得:
az acr manifest showコマンドを使用してイメージマニフェストを取得 - レイヤーサイズ計算: マニフェスト内の各レイヤーサイズを合計してイメージ全体のサイズを算出
- マルチアーキテクチャ対応: マニフェストリスト(manifest list)を検出し、各プラットフォーム(amd64、arm64など)ごとのサイズを個別に表示
- ヒューマンリーダブル: バイト数をKB、MB、GBなどの単位に自動変換
- コマンドライン引数対応: argparseを使用して柔軟にパラメータを指定可能
実装のポイント
- マルチアーキテクチャイメージの場合、各プラットフォームのマニフェストをダイジェストで個別に取得
- エラーハンドリングにより、Azure CLIの実行エラーやJSONパースエラーを適切に処理
- 設定変数とコマンドライン引数の両方に対応し、柔軟な使用方法を提供
使い方
Gist経由で直接実行
スクリプトをダウンロードせずに、Gistから直接実行できます:
# Gist経由で直接実行
curl -s https://gist.github.com/hideki5123/c64c29d51614bfa78b5b81d5b44657b3/raw/get_acr_image_size.py | python3 - -r myacr -n sample-app -t latest
# 特定のアーキテクチャのみ
curl -s https://gist.github.com/hideki5123/c64c29d51614bfa78b5b81d5b44657b3/raw/get_acr_image_size.py | python3 - -r myacr -n sample-app -t latest -a amd64
ローカルで実行
スクリプトをダウンロードしてローカルで実行する場合:
# コマンドライン引数で指定
python get_acr_image_size.py -r myacr -n sample-app -t latest
# 特定のアーキテクチャのみ
python get_acr_image_size.py -r myacr -n sample-app -t latest -a amd64
# スクリプト内の設定変数を使用(空の場合は引数必須)
python get_acr_image_size.py
実行例
単一アーキテクチャイメージ
============================================================
Azure Container Registry Image Size Calculator
============================================================
Registry: myacr
Repository: sample-app
Tag: latest
Architecture: All
Fetching manifest for: myacr/sample-app:latest
------------------------------------------------------------
Image size: 1.23 GB
Raw bytes: 1,320,000,000
============================================================
マルチアーキテクチャイメージ
============================================================
Azure Container Registry Image Size Calculator
============================================================
Registry: myacr
Repository: sample-app
Tag: latest
Architecture: All
Fetching manifest for: myacr/sample-app:latest
------------------------------------------------------------
Multi-architecture image detected.
Available platforms:
- linux/amd64
- linux/arm64
Architecture OS Size
------------------------------------------
amd64 linux 1.23 GB
arm64 linux 1.15 GB
------------------------------------------
Total 2.38 GB
============================================================
まとめ
ACRのイメージサイズを簡単に確認できるスクリプトです。マルチアーキテクチャ対応により、各プラットフォームごとのサイズも確認でき、イメージの最適化やストレージコストの見積もりに役立ちます。
Discussion