チュートリアル - Azure Container Registry (ACR) を作成してイメージをビルドする

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リソースをデプロイおよび管理する論理コンテナーです。

  1. リソース グループ名、場所、レジストリ名の変数を作成します。 これらの値を使用することも、独自の値を作成することもできます。 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を設定します。 これらの値を使用することも、独自の値を作成することもできます。

  2. az group create コマンドを使用して、リソース グループを作成します。

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  3. az 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 クラスターをデプロイする方法について説明します。