Azure Container Registry (ACR) は、コンテナー イメージのプライベート レジストリです。 プライベート コンテナー レジストリを使用すると、アプリケーションとカスタム コードを安全にビルドおよびデプロイすることができます。
このチュートリアルでは、ACR インスタンスをデプロイし、それにコンテナー イメージをプッシュします。 あなたは次のことを学びます。
- ACR インスタンスを作成します。
- ACR タスクを使用して、コンテナー イメージをビルドして ACR にプッシュします。
- レジストリ内のイメージを表示します。
開始する前に
previous チュートリアルでは、アプリケーション コード リポジトリを複製し、Docker を使用して単純な Azure Store Front アプリケーションのコンテナー イメージを作成しました。 Azure ストア フロント アプリ イメージを作成していない場合は、Tutorial 1 - AKS 用のアプリケーションの準備 に戻ってください。
このチュートリアルでは、バージョン 2.0.53 以降Azure CLI必要です。 バージョンを確認するには、az --version コマンドを実行します。 インストールまたはアップグレードする必要がある場合は、「Install Azure CLIを参照してください。
Azure Container Registryを作成する
ACR インスタンスを作成する前に、リソース グループが必要です。 Azure リソース グループは、Azureリソースをデプロイおよび管理する論理コンテナーです。
リソース グループ名、場所、レジストリ名の変数を作成します。 これらの値を使用することも、独自の値を作成することもできます。
ACRNAMEに格納されるレジストリ名変数の値は、Azure内で一意であり、5 から 50 文字の小文字の英数字を含む必要があります。export RESOURCE_GROUP=myResourceGroup export LOCATION=westus2 export RANDOM_STRING=$(printf '%05d%05d' "$RANDOM" "$RANDOM") export ACRNAME="myregistry${RANDOM_STRING}"ACRNAMEに格納されるレジストリ名変数の値は、Azure内で一意であり、5 から 50 文字の小文字の英数字を含む必要があります。ACRNAME値は、レジストリ名が一意であることを確認するために、ランダムな 10 桁の文字列を格納するRANDOM_STRING変数と連結されます。 変数RESOURCE_GROUPにリソース グループとしての値myResourceGroupを設定し、変数LOCATIONに値westus2を設定します。 これらの値を使用することも、独自の値を作成することもできます。az group createコマンドを使用して、リソース グループを作成します。az group create --name $RESOURCE_GROUP --location $LOCATIONaz acr createコマンドを使用して ACR インスタンスを作成し、独自の一意のレジストリ名を指定します。 Basic SKU は、ストレージとスループットのバランスが取れた、開発目的のコスト最適化されたエントリ ポイントです。az acr create \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --name $ACRNAME \ --sku Basic
コンテナー イメージをビルドしてレジストリにプッシュする
Azure CLI az acr build コマンドを使用して、イメージをビルドして ACR にプッシュします。
az acr build コマンドでは、前の記事で複製したリポジトリ内のイメージを使用して、AKS 用のアプリを準備します。 必ずそのディレクトリに切り替えてください。そうしないと build コマンドが失敗します。 たとえば、ディレクトリ demorepo を作成してリポジトリを複製した場合、リポジトリのルート ディレクトリは aks-store-demo であるため、 demorepo/aks-store-demo ディレクトリに切り替えます。
コンテナー イメージをビルドまたはレジストリにプッシュする同等のAzure PowerShellコマンドレットはありません。 Azure CLIの手順を使用する必要がありますが、ACRNAME 変数を PowerShell で作成した値に設定します。 PowerShell では、コマンド $ACRNAMEを使用して値を取得できます。
次の例では、product-service イメージはビルドしません。 このイメージのビルドには時間がかかる場合があり、GitHub Container Registry (GHCR) にはコンテナー イメージが既に用意されています。
az acr import コマンドを使用して、GHCR から ACR インスタンスにイメージをインポートできます。 また、 rabbitmq イメージもビルドしません。 このイメージはDocker Hubパブリック リポジトリから入手でき、ACR インスタンスをビルドしたり、ACR インスタンスにプッシュしたりする必要はありません。
az acr import \
--name $ACRNAME \
--source ghcr.io/azure-samples/aks-store-demo/product-service:latest \
--image aks-store-demo/product-service:latest
az acr build \
--registry $ACRNAME \
--image aks-store-demo/order-service:latest ./src/order-service/
az acr build \
--registry $ACRNAME \
--image aks-store-demo/store-front:latest ./src/store-front/
レジストリ内のイメージの一覧表示
az acr repository list コマンドを使用して、ACR インスタンス内のイメージを表示します。
az acr repository list --name $ACRNAME --output table
次の出力例は、レジストリ内の使用可能なイメージを一覧表示します。
Result
----------------
aks-store-demo/product-service
aks-store-demo/order-service
aks-store-demo/store-front
次のステップ
このチュートリアルでは、ACR を作成し、AKS クラスターで使用するためにイメージをそこにプッシュしました。 以下の方法を学習しました。
- ACR インスタンスを作成します。
- ACR タスクを使用して、コンテナー イメージをビルドして ACR にプッシュします。
- レジストリ内のイメージを表示します。
次のチュートリアルでは、Azureに Kubernetes クラスターをデプロイする方法について説明します。