次の方法で共有


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

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

レジストリにログインし、コンテナー イメージを操作するために、このクイック スタートでは、Azure CLI を実行している必要があります (バージョン 2.0.55 以降を推奨)。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

また、デーモンを実行してローカルに Docker をインストールする必要があります。 Docker では、MacWindows、または Linux システムで Docker を簡単に構成できるパッケージが提供されています。

Azure へのサインイン

Azure portal にサインインします。

コンテナー レジストリの作成

[リソースの作成]>[コンテナー]>[コンテナー レジストリ] の順に選択します。

ポータルでコンテナー レジストリに移動する

コンテナー レジストリ名と SKU を構成する

[基本] タブで [リソース グループ][レジストリ名] の値を入力します。 レジストリ名は Azure 内で一意である必要があり、ダッシュ文字 (-) を使用せずに 5 から 50 文字の英数字を含む必要があります。 このクイック スタートでは、West US 2 という名前のmyResourceGroupの場所に新しいリソース グループを作成し、SKU の場合は [Standard] を選択します。

ポータルでコンテナー レジストリを作成する

さまざまな SKU オプションの詳細については、「 Azure Container Registry SKU」を参照してください。

ドメイン名ラベル (DNL) オプションの構成

ドメイン名ラベル (DNL) 機能は、レジストリ DNS 名のサブドメインの引き継ぎ攻撃を防ぐことでセキュリティを強化します。 これらの攻撃は、レジストリが削除され、別のエンティティが同じレジストリ名を再利用すると発生し、ダウンストリーム参照が他のエンティティによって再作成されたレジストリからプルされる可能性があります。

DNL は、レジストリの DNS 名に一意のハッシュを追加することで、これに対処します。 これにより、同じレジストリ名が別のエンティティによって再利用された場合でも、一意のハッシュによって DNS 名が異なることがあります。 これにより、ダウンストリーム参照が誤って他のエンティティによって再作成されたレジストリを指すのを防ぐことができます。

ポータルからレジストリを作成する場合は、使用可能なオプションから ドメイン名ラベルスコープ を選択します。

  • セキュリティで保護されていない: レジストリ名 ( contosoacrregistry.azurecr.io など) に基づいて、DNS 名 as-isを作成します。 このオプションには DNL 保護は含まれません。
  • テナントの再利用: テナントとレジストリ名に基づいて一意のハッシュを追加し、DNS 名がテナント内で一意であることを確認します。
  • サブスクリプションの再利用: サブスクリプション、テナント、レジストリ名に基づいて一意のハッシュを追加し、DNS 名がサブスクリプション内で一意であることを確認します。
  • リソース グループの再利用: リソース グループ、サブスクリプション、テナント、レジストリ名に基づいて一意のハッシュを追加し、リソース グループ内で DNS 名が一意であることを確認します。
  • 再利用なし: 他の要因に関係なく、レジストリが作成されるたびに一意のハッシュを持つ一意の DNS 名を生成し、DNS 名が常に一意であることを確認します。

不変構成: レジストリの作成時に選択された DNL スコープは永続的であり、後で変更することはできません。 これにより、一貫した DNS 動作が保証され、ダウンストリーム参照の中断が防止されます。

[ドメイン名ラベルの構成] オプション

DNL オプションの DNS 名への影響

DNS 名の形式: セキュリティで保護されていない以外のすべての DNL 対応オプションの場合、DNS 名は registryname-hash.azurecr.io形式に従います。ここで、ダッシュ (-) はハッシュ区切り記号として機能します。 競合を回避するために、レジストリ名にダッシュ (-) は使用できません。 たとえば、contosoacrregistry DNL スコープを持つ Tenant Reuse という名前のレジストリには、contosoacrregistry-e7ggejfuhzhgedc8.azurecr.ioのような DNS 名が付けられます。

ダウンストリームリファレンス: DNS 名はレジストリ名と異なる場合があり、DOCKERfiles、Kubernetes YAML、Helm チャートなどのダウンストリーム ファイルの更新が必要になり、DNL ハッシュを持つ完全な DNS 名が反映されます。 たとえば、ダウンストリーム Dockerfile で、contosoacrregistry DNL スコープを持つ Tenant Reuse という名前のレジストリを参照する場合は、ダウンストリーム Dockerfile 内のcontosoacrregistry-e7ggejfuhzhgedc8.azurecr.ioへの参照を更新する必要があります。

[ドメイン名ラベル] オプションと [DNS 名] の確認のスクリーンショット。

ロール割り当て権限モードを設定する

新しいレジストリの "ロール割り当てアクセス許可モード" を構成します。 このオプションは、Microsoft Entra のロールベースのアクセス制御 (RBAC) とロールの割り当てをレジストリに対して管理する方法を決定します。これには、Microsoft Entra リポジトリのアクセス許可に対する Microsoft Entra 属性ベースのアクセス制御 (ABAC) の使用が含まれます。

標準の Microsoft Entra RBAC ロールの割り当てを保持し、必要に応じて、リポジトリレベルのきめ細かなアクセス制御に Microsoft Entra ABAC 条件を適用する場合は、[RBAC レジストリと ABAC リポジトリのアクセス許可] を選択します。

権限割り当てモードを設定するためのスクリーンショット

このオプションの詳細については、リポジトリの アクセス許可については、Microsoft Entra 属性ベースのアクセス制御 (ABAC) を参照してください。

コンテナー レジストリのデプロイ

残りの設定は既定値のままにします。 次に、 [Review + create](確認と作成) を選択します。 設定を確認したら [作成] を選択します。

ヒント

このクイック スタートでは、ほとんどの Azure Container Registry ワークフローで十分な Standard レジストリを作成します。 ストレージとイメージのスループットを向上させる他のレベルと、プライベート エンドポイント を使用した接続などの機能を選択します。 利用可能なサービス レベル (SKU) の詳細については、コンテナー レジストリのサービス レベルに関するページを参照してください。

"デプロイメントに成功しました" というメッセージが表示されたら、ポータルでコンテナー レジストリを選択します。

ポータルでのコンテナー レジストリの概要

レジストリ名とログイン サーバーの値をメモします。これは、Azure クラウドの azurecr.io で終わる完全修飾名です。 DNL オプションを選択した場合、ログイン サーバー名には一意のハッシュが含まれます。

Docker を使用してイメージをプッシュおよびプルする場合、および Dockerfiles、Kubernetes YAML、Helm グラフなどのダウンストリーム参照で、次の手順でログイン サーバーを使用してください。

レジストリへのログイン

コンテナー イメージをプッシュしたりプルしたりするには、あらかじめレジストリ インスタンスにログインしておく必要があります。 ローカル コンピューターで Azure CLI にサインインし、az acr login コマンドを実行します。

az acr login -n registrynameなど、Azure CLI でログインするときにレジストリ リソース名のみを指定します。 registryname.azurecr.ioregistryname-hash.azurecr.io (DNL 対応レジストリの場合) など、完全修飾ログイン サーバー名は使用しないでください。

az acr login --name <registry-name>

例:

az acr login --name contosoacrregistry

このコマンドは、完了すると Login Succeeded を返します。

レジストリにイメージをプッシュする

Azure Container Registry にイメージをプッシュするには、まずイメージを用意する必要があります。 ローカル コンテナー イメージがまだない場合は、次の docker pull コマンドを実行して、既存のパブリック イメージをプルします。 この例では、Microsoft Container Registry から hello-world イメージをプルします。

docker pull mcr.microsoft.com/hello-world

レジストリにイメージをプッシュする前に、レジストリ ログイン サーバーの完全修飾名で docker タグ を使用してイメージにタグを付ける必要があります。

  • 一意の DNS 名ハッシュが含まれるドメイン 名ラベル (DNL) で保護されたレジストリのログイン サーバー名形式は mycontainerregistry-abc123.azurecr.io
  • Unsecure DNL オプションを使用して作成されたレジストリのログイン サーバー名の形式はmycontainerregistry.azurecr.io

たとえば、 Tenant Reuse DNL スコープを使用してレジストリが作成された場合、ログイン サーバーは DNS 名にハッシュを含む mycontainerregistry-abc123.azurecr.io のようになります。 Unsecure DNL オプションを使用してレジストリが作成された場合、ログイン サーバーはハッシュなしでmycontainerregistry.azurecr.ioのようになります。

レジストリの作成中の DNL オプションと DNS 名への影響の詳細については、「 クイック スタート - ポータルでのレジストリの作成」を参照してください。

例: プッシュ前に画像にタグを付ける

レジストリのログイン サーバーを使用して docker tag コマンドを使用してイメージにタグを付けます。

DNL 以外のレジストリのイメージのタグ付け:

docker tag mcr.microsoft.com/hello-world mycontainerregistry.azurecr.io/hello-world:v1

DNL 対応レジストリのタグ付けイメージ:

docker tag mcr.microsoft.com/hello-world mycontainerregistry-abc123.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 push リポジトリを選択します。

ポータルでコンテナー イメージを一覧表示する

hello-world リポジトリを選択することによって、 v1 タグが付いたイメージが表示されます。

レジストリからイメージを実行する

ここで、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.

[...]

リソースをクリーンアップする

リソースをクリーンアップするには、ポータルで myResourceGroup リソース グループに移動します。 リソース グループが読み込まれたら、 [リソース グループの削除] をクリックして、リソース グループ、コンテナー レジストリ、およびそこに格納されているコンテナー イメージを削除します。

ポータルでリソース グループを削除する

次のステップ

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