レジストリに関するネットワークの問題のトラブルシューティング

この記事は、仮想ネットワークまたはファイアウォールの内側で Azure コンテナー レジストリにアクセスするときに発生する可能性のある問題のトラブルシューティングに役立ちます。

現象

次のうち 1 つ以上が含まれる場合があります。

  • イメージをプッシュまたはプルできず、エラー dial tcp: lookup myregistry.azurecr.io が発生する
  • イメージをプッシュまたはプルできず、Azure CLI エラー Could not connect to the registry login server が発生する
  • レジストリから Azure Kubernetes Service または別の Azure サービスにイメージをプルできない
  • HTTPS プロキシの背後にあるレジストリにアクセスできず、エラー Error response from daemon: login attempt failed with status: 403 Forbidden が発生する
  • Azure portal でレジストリ設定にアクセスまたは表示できないか、Azure CLI を使用してレジストリを管理できない
  • 仮想ネットワークの設定またはパブリック アクセス規則を追加または変更できない
  • ACR タスクによるイメージのプッシュまたはプルができない
  • Azure Security Center によるレジストリ内のイメージのスキャンができない。または、スキャン結果が Azure Security Center に表示されない

原因

  • クライアントのファイアウォールまたはプロキシによってアクセスが妨げられている - 解決策
  • レジストリのパブリック ネットワーク アクセス規則によってアクセスが妨げられている - 解決策
  • 仮想ネットワークの構成によってアクセスが妨げられている - 解決策
  • Azure Security Center をプライベート エンドポイントまたはサービス エンドポイントを持つレジストリと統合しようとしている - 解決策

詳しい診断

az acr check-health コマンドを実行して、レジストリ環境の正常性に関する詳細情報を取得し、必要に応じてターゲット レジストリにアクセスします。 たとえば、特定のネットワーク接続や構成の問題を診断します。

コマンドの例については、「Azure コンテナー レジストリの正常性のチェック」を参照してください。 エラーが報告された場合は、推奨される対処法について、エラー リファレンスと次のセクションを確認してください。

注意

また、レジストリの認証または承認に問題がある場合にも、ネットワーク接続の現象が発生することがあります。 レジストリ ログインのトラブルシューティング」を参照してください。

対処法

クライアント ファイアウォール アクセスを構成する

クライアン トファイアウォールまたはプロキシ サーバーの背後からレジストリにアクセスするには、レジストリの REST エンドポイントおよびデータ エンドポイントにアクセスするようにファイアウォール規則を構成します。 専用データ エンドポイントが有効になっている場合は、次にアクセスするための規則が必要です。

  • REST エンドポイント: <registryname>.azurecr.io
  • データ エンドポイント: <registry-name>.<region>.data.azurecr.io

geo レプリケートされたレジストリの場合は、リージョンのレプリカごとにデータ エンドポイントへのアクセスを構成します。

HTTPS プロキシの背後で、Docker クライアントと Docker デーモンの両方をプロキシの動作用に確実に構成します。

ContainerRegistryLoginEvents テーブルのレジストリ リソース ログは、ブロックされている接続試行の診断に役立ちます。

関連リンク:

レジストリへのパブリック アクセスを構成する

インターネット経由でレジストリにアクセスしている場合は、クライアントからのパブリック ネットワーク アクセスがレジストリで許可されていることを確認します。 既定では、Azure コンテナー レジストリによって、すべてのネットワークからのパブリック レジストリエンド ポイントへのアクセスが許可されています。 レジストリでは、選択したネットワークまたは選択した IP アドレスへのアクセスを制限することができます。

レジストリがサービス エンドポイントを持つ仮想ネットワーク用に構成されている場合、パブリック ネットワークアクセスを無効にすると、サービス エンドポイント経由のアクセスも無効になります。 レジストリが Private Link を使用する仮想ネットワーク用に構成されている場合、IP ネットワーク規則は、レジストリのプライベート エンドポイントには適用されません。

関連リンク:

VNet アクセスを構成する

Private Link のプライベート エンドポイントまたはサービス エンドポイント (プレビュー) のいずれかを使用して、仮想ネットワークが構成されていることを確認します。 現在、Azure Bastion エンドポイントはサポートされていません。

ネットワーク内の他のリソースからレジストリへのトラフィックを制限するために使用される NSG ルールとサービス タグを確認します。

レジストリへのサービス エンドポイントが構成されている場合は、そのネットワーク サブネットからのアクセスを許可するネットワーク規則がレジストリに追加されていることを確認します。 サービス エンドポイントによって、ネットワーク内の仮想マシンおよび AKS クラスターからのアクセスのみがサポートされます。

Azure Firewall または同様のソリューションがネットワークに構成されている場合は、AKS クラスターなどの他のリソースからのエグレス トラフィックが、レジストリ エンドポイントに到達できるようになっていることを確認します。

関連リンク:

イメージ スキャン ソリューションを構成する

レジストリがプライベート エンドポイントまたはサービス エンドポイントで構成されている場合、現在、イメージ スキャンのために Azure Security Center と統合することはできません。 必要に応じて、次のような、Azure Marketplace で使用できるその他のイメージ スキャン ソリューションを構成します。

関連リンク:

高度なトラブルシューティング

レジストリでリソース ログの収集が有効になっている場合は、ContainterRegistryLoginEvents ログを確認します。 このログには、受信 ID や IP アドレスを含む、認証イベントと状態が格納されています。 ログでレジストリ認証エラーのクエリを実行します。

関連リンク:

次のステップ

ここで問題を解決できない場合は、次のオプションを参照してください。