Azure Container Registry は、コンテナー イメージおよび関連アーティファクトのビルド、保管、管理を行うための、プライベート レジストリ サービスです。 このクイックスタートでは、Azure PowerShell をローカルで使用して Azure Container Registry インスタンスを作成します。 続いて、Docker CLI を使用して hello-world コンテナー イメージをプルし、その hello-world コンテナー イメージにタグ付けを行って新規のコンテナー イメージを作成し、その新規のコンテナー イメージをコンテナー レジストリにプッシュし、ローカルのコンテナー イメージを削除し、最後にそのイメージをレジストリからプルして実行します。
前提条件
Note
Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を始めるには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。
このクイックスタートには、Azure PowerShell モジュールが必要です。 Get-Module -ListAvailable Az
を実行して、インストールされているバージョンを判断します。 インストールまたはアップグレードする必要がある場合は、「Azure PowerShell モジュールをインストールする」を参照してください。
Docker もローカルにインストールされている必要があります。 Docker には macOS、Windows、Linux の各システム用のパッケージがあります。
Azure Cloud Shell には、必要な Docker コンポーネント (dockerd
デーモン) がすべて含まれているわけではないため、このクイックスタートで Cloud Shell を使用することはできません。
Azure にサインインする
Connect-AzAccount コマンドを使用して Azure サブスクリプションにサインインし、画面上の指示に従います。
Connect-AzAccount
リソース グループを作成する
Azure での認証が済んだら、New-AzResourceGroup を使用してリソース グループを作成します。 リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。
New-AzResourceGroup -Name myResourceGroup -Location EastUS
コンテナー レジストリを作成する
次に、New-AzContainerRegistry コマンドを使用して新しいリソース グループにコンテナー レジストリを作成します。
レジストリの名前は Azure 内で一意にする必要があります。また、5 ~ 50 文字の英数字を含める必要があります。 次の例では、「mycontainerregistry」という名前のレジストリを作成しています。以下のコマンドの mycontainerregistry を置き換えてから実行して、レジストリを作成します。
$registry = New-AzContainerRegistry -ResourceGroupName "myResourceGroup" -Name "mycontainerregistry" -EnableAdminUser -Sku Basic -Location EastUS
ヒント
このクイックスタートでは、Basic レジストリを作成します。これは、Azure Container Registry について学習している開発者にとって、コストが最適なオプションです。 ストレージとイメージのスループットを向上させる他のレベルと、プライベート エンドポイント を使用した接続などの機能を選択します。 使用可能なサービス レベル (SKU) の詳細については、「コンテナー レジストリのサービス レベル」を参照してください。
レジストリにログインする
コンテナー イメージをプッシュしたりプルしたりするには、Connect-AzContainerRegistry コマンドレットを使用してあらかじめレジストリにログインしておく必要があります。 次の例では、Connect-AzAccount
コマンドレットを使用して Azure に認証する際、ログインで使用したものと同じ資格情報を使用しています。
Note
次の例で、$registry.Name
の値はリソース名です。完全修飾レジストリ名ではありません。
Connect-AzContainerRegistry -Name $registry.Name
このコマンドが完了すると Login Succeeded
が返されます。
イメージをレジストリにプッシュする
Azure Container Registry にイメージをプッシュするには、まずイメージを用意する必要があります。 ローカル コンテナー イメージがまだない場合は、次の docker pull コマンドを実行して、既存のパブリック イメージをプルします。 この例では、Microsoft Container Registry から hello-world
イメージをプルします。
docker pull mcr.microsoft.com/hello-world
イメージをレジストリにプッシュするには、レジストリのログイン サーバーの完全修飾名を使用して、そのイメージにタグを付けておく必要があります。 ログイン サーバー名は、<registry-name>.azurecr.io (すべて小文字にする必要があります) という形式です (mycontainerregistry.azurecr.io など)。
docker tag コマンドを使用してイメージにタグ付けします。 <login-server>
を ACR インスタンスのログイン サーバー名で置き換えます。
docker tag mcr.microsoft.com/hello-world <login-server>/hello-world:v1
例:
docker tag mcr.microsoft.com/hello-world mycontainerregistry.azurecr.io/hello-world:v1
最後に、docker push を使用して、レジストリ インスタンスにイメージをプッシュします。 <login-server>
をレジストリ インスタンスのログイン サーバー名で置き換えます。 この例では、hello-world レポジトリを作成します。これには、hello-world:v1
イメージが含まれています。
docker push <login-server>/hello-world:v1
コンテナー レジストリにイメージをプッシュした後は、ローカルの Docker 環境から hello-world:v1
イメージを削除します。 (この docker rmi コマンドでは、Azure コンテナー リポジトリ内の hello-world リポジトリからイメージは削除されないことに注意してください)。
docker rmi <login-server>/hello-world:v1
レジストリからイメージを実行する
ここで、docker run を使用して、コンテナー レジストリから hello-world:v1
コンテナー イメージをプルして実行できます。
docker run <login-server>/hello-world:v1
出力例:
Unable to find image 'mycontainerregistry.azurecr.io/hello-world:v1' locally
v1: Pulling from hello-world
Digest: sha256:662dd8e65ef7ccf13f417962c2f77567d3b132f12c95909de6c85ac3c326a345
Status: Downloaded newer image for mycontainerregistry.azurecr.io/hello-world:v1
Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]
リソースをクリーンアップする
このクイックスタートで作成したリソースでの作業が完了したら、Remove-AzResourceGroup コマンドを使用して、リソース グループ、コンテナー レジストリ、そこに格納されているコンテナー イメージを削除します。
Remove-AzResourceGroup -Name myResourceGroup
次のステップ
このクイックスタートでは、Azure PowerShell を使用して Azure Container Registry インスタンスをローカルに作成し、hello-world コンテナー イメージをプルし、その hello-world イメージにタグ付けを行って新規のコンテナー イメージを作成し、その新規のコンテナー イメージをコンテナー レジストリにプッシュし、ローカル コンテナー イメージを削除して、最後にレジストリからイメージをプルして実行しました。 Azure Container Registry のチュートリアルに進んで、ACR についての理解を深めましょう。