Azure Container Registry のアーティファクト キャッシュ
アーティファクト キャッシュ機能を使用すると、ユーザーはコンテナー イメージをプライベート コンテナー レジストリにキャッシュできます。 アーティファクト キャッシュは、Basic、Standard、Premium のサービス レベルで利用できます。
アーティファクト キャッシュは、パブリック リポジトリとプライベート リポジトリの両方にキャッシュ ソリューションを提供することで、コンテナー イメージの管理を強化します。
アーティファクト キャッシュは、Azure Container Registry (ACR) を通じたより高速で "信頼性の高いプル操作" を提供し、geo レプリケーションや可用性ゾーンのサポートなどの機能を利用して、より高い可用性と高速なイメージ プルを実現します。
アーティファクト キャッシュによって、ユーザーがファイアウォール構成とコンプライアンス標準にシームレスに従うために "プライベート ネットワーク" 経由でキャッシュされたレジストリにアクセスすることが可能になります。
アーティファクト キャッシュは、パブリック レジストリによって課されるプル制限の課題を解決します。 アップストリームのソース資格情報を使用してキャッシュ ルールを認証することをお勧めします。 次に、レート制限の軽減に役立つように、ローカル ACR からイメージをプルします。
用語
キャッシュ規則 - キャッシュ規則は、サポートされているリポジトリからキャッシュに成果物をプルするために作成できる規則です。
キャッシュ規則には、次の 4 つの部分が含まれています。
規則名 - キャッシュ規則の名前。 たとえば、「
Hello-World-Cache
」のように入力します。ソース - ソース レジストリの名前。
リポジトリ パス - キャッシュする成果物を検索および取得するリポジトリのソース パス。 たとえば、「
docker.io/library/hello-world
」のように入力します。新しい ACR リポジトリ名前空間 - 成果物を格納するための新しいリポジトリ パスの名前。 たとえば、「
hello-world
」のように入力します。 このリポジトリは、ACR インスタンス内に既に存在していることはできません。
資格情報
資格情報は、ソース レジストリのユーザー名とパスワードのセットです。 パブリック リポジトリまたはプライベート リポジトリで認証するには、資格情報が必要です。 資格情報には 4 つの部分が含まれています
資格情報 - 資格情報の名前。
ソース レジストリ ログイン サーバー - ソース レジストリのログイン サーバー。
ソース認証 - 資格情報を格納するキー コンテナーの場所。
ユーザー名とパスワードのシークレット - ユーザー名とパスワードを含むシークレット。
制限事項
キャッシュは、使用可能なコンテナー イメージで少なくとも 1 つのイメージ プルが完了した後にのみ発生します。 新しいイメージが使用可能になるたびに、新しいイメージ プルが完了する必要があります。 アーティファクト キャッシュは、新しいタグが利用できるようになっても、新しいタグのイメージを自動的にはプルしません。 これはロードマップに含まれていますが、このリリースではサポートされていません。
アーティファクト キャッシュがサポートしているキャッシュ ルール数は 1,000 までです。
アップストリームのサポート
アーティファクト キャッシュが現在サポートしているアップストリーム レジストリは以下のとおりです。
警告
お客様は、Docker Hub からコンテンツを取得するために資格情報セットを生成する必要があります。
アップストリーム レジストリ | サポート | 可用性 |
---|---|---|
Docker Hub | 認証されているプルのみがサポートされます。 | Azure CLI、Azure portal |
Microsoft アーティファクト レジストリ | 認証されていないプルのみがサポートされます。 | Azure CLI、Azure portal |
AWS Elastic Container Registry (ECR) パブリック ギャラリー | 認証されていないプルのみがサポートされます。 | Azure CLI、Azure portal |
GitHub Container Registry | 認証されたプルと認証されていないプルの両方がサポートされます。 | Azure CLI、Azure portal |
Quay | 認証されたプルと認証されていないプルの両方がサポートされます。 | Azure CLI、Azure portal |
registry.k8s.io | 認証されたプルと認証されていないプルの両方がサポートされます。 | Azure CLI |
Google Container Registry | 認証されたプルと認証されていないプルの両方がサポートされます。 | Azure CLI |
ワイルドカード
ワイルドカードでは、アスタリスク (*) を使用し、コンテナー イメージ レジストリ内の複数のパスを照合します。 アーティファクト キャッシュが現在サポートしているワイルドカードは以下のとおりです。
Note
キャッシュ ルールは、ターゲット リポジトリからソース リポジトリにマップされます。
レジストリ レベルのワイルドカード
レジストリ レベルのワイルドカードを使用すると、アップストリーム レジストリからすべてのリポジトリをキャッシュできます。
キャッシュ ルール | マッピング | 例 |
---|---|---|
contoso.azurecr.io/* => mcr.microsoft.com/* | ACR の下にあるすべてのイメージを MCR にマッピング。 | contoso.azurecr.io/myapp/image1 => mcr.microsoft.com/myapp/image1 contoso.azurecr.io/myapp/image2 => mcr.microsoft.com/myapp/image2 |
リポジトリ レベルのワイルドカード
リポジトリ レベルのワイルドカードを使用すると、アップストリーム レジストリ マッピングからリポジトリ プレフィックスにすべてのリポジトリをキャッシュできます。
キャッシュ ルール | マッピング | 例 |
---|---|---|
contoso.azurecr.io/dotnet/* => mcr.microsoft.com/dotnet/* | ACR 下の特定のリポジトリをそれに対応する MCR のリポジトリにマッピングします。 | contoso.azurecr.io/dotnet/sdk => mcr.microsoft.com/dotnet/sdk contoso.azurecr.io/dotnet/runtime => mcr.microsoft.com/dotnet/runtime |
contoso.azurecr.io/library/dotnet/* => mcr.microsoft.com/dotnet/* contoso.azurecr.io/library/python/* => docker.io/library/python/* |
ACR 下の特定のリポジトリを、さまざまなアップストリーム レジストリからリポジトリにマッピングします。 | contoso.azurecr.io/library/dotnet/app1 => mcr.microsoft.com/dotnet/app1 contoso.azurecr.io/library/python/app3 => docker.io/library/python/app3 |
ワイルドカード ベースのキャッシュ ルールの制限事項
ワイルドカード キャッシュ ルールでは、アスタリスク (*) を使用し、コンテナー イメージ レジストリ内の複数のパスを照合します。 これらのルールは、他のワイルドカード キャッシュ ルールと重複できません。 つまり、特定のレジストリ パスにワイルドカード キャッシュ ルールがある場合、それと重複する別のワイルドカード ルールを追加することはできません。
重複するルールの例をいくつか次に示します。
例 1:
既存のキャッシュ ルール: contoso.azurecr.io/* => mcr.microsoft.com/*
追加される新しいキャッシュ: contoso.azurecr.io/library/* => docker.io/library/*
ターゲット リポジトリ パス contoso.azurecr.io/library/*
が既存のワイルドカード ルール contoso.azurecr.io/*
と重複するため、新しいキャッシュ ルールの追加はブロックされます。
例 2:
既存のキャッシュ ルール: contoso.azurecr.io/library/*
=>mcr.microsoft.com/library/*
追加される新しいキャッシュ: contoso.azurecr.io/library/dotnet/*
=>docker.io/library/dotnet/*
ターゲット リポジトリ パス contoso.azurecr.io/library/dotnet/*
が既存のワイルドカード ルール contoso.azurecr.io/library/*
と重複するため、新しいキャッシュ ルールの追加はブロックされます。
静的/固定キャッシュ ルールの制限事項
静的または固定キャッシュ ルールはもっと具体的なものであり、ワイルドカードは使用しません。 ワイルドカードベースのキャッシュ ルールと重複してもかまいません。 キャッシュ ルールが固定のリポジトリ パスを指定する場合は、ワイルドカードベースのキャッシュ ルールとの重複が許可されます。
例 1:
既存のキャッシュ ルール: contoso.azurecr.io/*
=>mcr.microsoft.com/*
追加される新しいキャッシュ: contoso.azurecr.io/library/dotnet
=>docker.io/library/dotnet
contoso.azurecr.io/library/dotnet
は静的パスであり、ワイルドカード キャッシュ ルール contoso.azurecr.io/*
と重複しても良いため、新しいキャッシュ ルールの追加は許可されます。
アーティファクト キャッシュを有効にする - Azure CLI
以下の手順に従うことで、Azure CLI を使用して認証有りまたは無しで Azure Container Registry のアーティファクト キャッシュを有効にすることができます。
前提条件
- この記事のサンプル コマンドは、Azure Cloud Shell または Azure CLI のローカル インストールを使用して実行できます。 これをローカルで使用したい場合は、バージョン 2.46.0 以降が必要です。
az --version
を実行してバージョンを確認します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。 - 資格情報を格納するための既存の Key Vault があります。 Key Vault での資格情報の作成と格納に関する詳細を確認してください。
- Key Vault からシークレットを設定および取得できます。 Key Vault からシークレットを設定および取得する方法の詳細を確認してください。
資格情報を使用せずにキャッシュ ルールを構成して作成します。
az acr Cache create コマンドを実行してキャッシュ ルールを作成します。
- たとえば、特定の
MyRegistry
Azure Container Registry の資格情報セットがないキャッシュ ルールを作成します。
az acr Cache create -r MyRegistry -n MyRule -s docker.io/library/ubuntu -t ubuntu-
- たとえば、特定の
az acr Cache show コマンドを実行してキャッシュ ルールを表示します。
- たとえば、特定の
MyRegistry
Azure Container Registry のキャッシュ ルールを表示します。
az acr Cache show -r MyRegistry -n MyRule
- たとえば、特定の
資格情報を作成する
資格情報を構成する前に、Azure KeyVault にシークレットを作成して格納し、Key Vault からシークレットを取得する必要があります。 Key Vault での資格情報の作成と格納に関する詳細を確認してください。そして Key Vault でシークレットの設定と取得を行うこと。
az acr credential set create コマンドを実行して、資格情報を作成します。
- たとえば、特定の
MyRegistry
Azure Container Registry の資格情報を作成します。
az acr credential-set create -r MyRegistry \ -n MyDockerHubCredSet \ -l docker.io \ -u https://MyKeyvault.vault.azure.net/secrets/usernamesecret \ -p https://MyKeyvault.vault.azure.net/secrets/passwordsecret
- たとえば、特定の
az acr credential set update を実行して、資格情報セットのユーザー名またはパスワード KV シークレット ID を更新します。
- たとえば、資格情報のユーザー名またはパスワード KV シークレット ID を更新するには、特定の
MyRegistry
Azure Container Registry を設定します。
az acr credential-set update -r MyRegistry -n MyDockerHubCredSet -p https://MyKeyvault.vault.azure.net/secrets/newsecretname
- たとえば、資格情報のユーザー名またはパスワード KV シークレット ID を更新するには、特定の
az acr credential-set show を実行して資格情報を表示します。
- たとえば、特定の
MyRegistry
Azure Container Registry の資格情報セットを表示します。
az acr credential-set show -r MyRegistry -n MyDockerHubCredSet
- たとえば、特定の
資格情報を使用してキャッシュ ルールを構成して作成する
az acr cache create コマンドを実行してキャッシュ ルールを作成します。
- たとえば、特定の
MyRegistry
Azure Container Registry の資格情報を使用してキャッシュ ルールを作成します。
az acr cache create -r MyRegistry -n MyRule -s docker.io/library/ubuntu -t ubuntu -c MyDockerHubCredSet
- たとえば、特定の
az acr cache update コマンドを実行して、キャッシュ ルールの資格情報を更新します。
- たとえば、特定の
MyRegistry
Azure Container Registry のキャッシュ ルールで資格情報を更新します。
az acr cache update -r MyRegistry -n MyRule -c NewCredSet
- たとえば、特定の
MyRegistry
Azure Container Registry の既存のキャッシュ ルールから資格情報を削除します。
az acr cache update -r MyRegistry -n MyRule --remove-cred-set
- たとえば、特定の
az acr cache show コマンドを実行してキャッシュ ルールを表示します。
- たとえば、特定の
MyRegistry
Azure Container Registry のキャッシュ ルールを表示します。
az acr cache show -r MyRegistry -n MyRule
- たとえば、特定の
アクセス ポリシーを使用して Key Vault にアクセス許可を割り当てる (レガシ)
Key Vault にアクセスするために使用されているシステム ID のプリンシパル ID を取得します。
PRINCIPAL_ID=$(az acr credential-set show -n MyDockerHubCredSet \ -r MyRegistry \ --query 'identity.principalId' \ -o tsv)
イメージをプルする前に、az keyvault set-policy コマンドを実行して、キー コンテナーへのアクセス権を割り当てます。
- たとえば、資格情報のアクセス許可を割り当てるには、KeyVault シークレットにアクセスします
az keyvault set-policy --name MyKeyVault \ --object-id $PRINCIPAL_ID \ --secret-permissions get
イメージをプルする
レジストリ ログイン サーバー名、リポジトリ名、および目的のタグで Docker コマンドを使用して、キャッシュからイメージをプルします。
- たとえば、特定のレジストリ ログイン サーバー
myregistry.azurecr.io
の目的のタグlatest
を使用してリポジトリhello-world
からイメージをプルする場合などです。
docker pull myregistry.azurecr.io/hello-world:latest
- たとえば、特定のレジストリ ログイン サーバー
リソースのクリーンアップ
az acr cache list コマンドを実行して、Azure Container Registry のキャッシュ ルールを一覧表示します。
- たとえば、特定の
MyRegistry
Azure Container Registry のキャッシュ ルールを一覧表示します。
az acr cache list -r MyRegistry
- たとえば、特定の
az acr cache delete コマンドを実行して、キャッシュ ルールを削除します。
- たとえば、特定の
MyRegistry
Azure Container Registry のキャッシュ ルールを削除します。
az acr cache delete -r MyRegistry -n MyRule
- たとえば、特定の
az acr credential set list を実行して、Azure Container Registry 内の資格情報を一覧表示します。
- たとえば、特定の
MyRegistry
Azure Container Registry の資格情報を一覧表示します。
az acr credential-set list -r MyRegistry
- たとえば、特定の
az acr credential-set delete を実行して資格情報を削除します。
- たとえば、特定の
MyRegistry
Azure Container Registry の資格情報を削除します。
az acr credential-set delete -r MyRegistry -n MyDockerHubCredSet
- たとえば、特定の
アーティファクト キャッシュを有効にする - Azure portal
以下の手順に従うことで、Azure portal を使用して認証有りまたは無しで Azure Container Registry のアーティファクト キャッシュを有効にすることができます。
前提条件
- Azure ポータル
- 資格情報を格納するための既存の Key Vault があります。 Key Vault での資格情報の作成と格納に関する詳細を確認してください。
- ロール ベースのアクセス (RBAC) コントロールのない既存のキー コンテナーがあること。
資格情報を使用せずにアーティファクト キャッシュを構成する
Azure portal で、手順に従ってキャッシュ規則を作成します。
自分の Azure Container Registry に移動します。
サイドの [メニュー] の [サービス] で [キャッシュ] を選びます。
[規則の作成] を選択します。
[New cache rule] (新しいキャッシュ規則) のウィンドウが表示されます。
[規則名] を入力します。
ドロップダウン メニューから、[ソース] レジストリを選択します。
キャッシュする成果物の [リポジトリのパス] を入力します。
プライベート リポジトリにアクセスしたり、認証済みのプルを実行したりしていない場合は、認証をスキップできます。
[宛先] で、キャッシュ対象の成果物を保存する新しい ACR リポジトリ名前空間の名前を入力します。
[保存] を選択します。
レジストリ ログイン サーバー名、リポジトリ名、および目的のタグで Docker コマンドを使用して、キャッシュからイメージをプルします。
- たとえば、特定のレジストリ ログイン サーバー
myregistry.azurecr.io
の目的のタグlatest
を使用してリポジトリhello-world
からイメージをプルする場合などです。
docker pull myregistry.azurecr.io/hello-world:latest
- たとえば、特定のレジストリ ログイン サーバー
認証を使用してアーティファクト キャッシュを構成する
Azure portal で、手順に従ってキャッシュ規則を作成します。
自分の Azure Container Registry に移動します。
サイドの [メニュー] の [サービス] で [キャッシュ] を選びます。
[規則の作成] を選択します。
[New cache rule] (新しいキャッシュ規則) のウィンドウが表示されます。
[規則名] を入力します。
ドロップダウン メニューから、[ソース] レジストリを選択します。
キャッシュする成果物の [リポジトリのパス] を入力します。
リポジトリに認証を追加するために、[認証] ボックスをオンにします。
[Create new credentials] (新しい資格情報の作成) を選択して、ソース レジストリのユーザー名とパスワードを保存するための新しい資格情報セットを作成します。 新しい資格情報を作成する方法を確認してください。
資格情報の準備ができたら、ドロップダウン メニューから資格情報を選択します。
[宛先] で、キャッシュ対象の成果物を保存する新しい ACR リポジトリ名前空間の名前を入力します。
[保存] を選択します。
レジストリ ログイン サーバー名、リポジトリ名、および目的のタグで Docker コマンドを使用して、キャッシュからイメージをプルします。
- たとえば、特定のレジストリ ログイン サーバー
myregistry.azurecr.io
の目的のタグlatest
を使用してリポジトリhello-world
からイメージをプルする場合などです。
docker pull myregistry.azurecr.io/hello-world:latest
- たとえば、特定のレジストリ ログイン サーバー
新しい資格情報を作成する
資格情報を構成する前に、Azure KeyVault にシークレットを作成して格納し、Key Vault からシークレットを取得する必要があります。 Key Vault での資格情報の作成と格納に関する詳細を確認してください。そして Key Vault でシークレットの設定と取得を行うこと。
[資格情報]>[資格情報の作成] の順に移動します。
ソース レジストリの新しい資格情報の [名前] を入力します。
[Source Authentication] (ソース認証) を選択します。 アーティファクト キャッシュが現在サポートしているのは、[Key Vault から選択] と [シークレット URI を入力] です。
[キー コンテナーから選択する] オプションの場合、キー コンテナーを使用した資格情報の作成について詳しく学習してください。
[作成] を選択します。
次のステップ
- 次の記事に進み、レジストリ キャッシュのトラブルシューティング ガイドを確認してください。