☁️

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