クイック スタート:Azure PowerShell を使用してプライベート コンテナー レジストリを作成する

Azure Container Registry は、コンテナー イメージおよび関連アーティクルのビルド、保管、管理をするための、プライベート レジストリ サービスです。 このクイックスタートでは、Azure PowerShell を使用して Azure コンテナー レジストリ インスタンスを作成します。 次に、Docker コマンドを使用してコンテナー イメージをレジストリにプッシュし、最後にレジストリからイメージをプルして実行します。

前提条件

Note

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

このクイック スタートには、Azure PowerShell モジュールが必要です。 Get-Module -ListAvailable Az を実行して、インストールされたバージョンを判断します。 インストールまたはアップグレードする必要がある場合は、Azure PowerShell モジュールのインストールに関するページを参照してください。

Docker もローカルにインストールする必要があります。 Docker には macOSWindowsLinux システム用のパッケージがあります。

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

ヒント

このクイック スタートでは、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 を作成し、コンテナー イメージをプッシュしてから、レジストリからイメージをプルして実行しました。 Azure Container Registry のチュートリアルに進んで、ACR についての理解を深めましょう。