Azure Container Registry の概要
Azure Container Registry は、オープン ソースの Docker Registry 2.0 に基づくマネージド レジストリ サービスです。 コンテナー イメージおよび関連する成果物を保存、管理する Azure コンテナー レジストリを作成、管理します。
既存のコンテナー開発およびデプロイ パイプラインでコンテナー レジストリを使用するか、Azure Container Registry タスクを使用して Azure 内にコンテナー イメージをビルドします。 必要に応じてビルドするか、またはソースコードのコミットやベース イメージの更新などのトリガーでビルドを完全に自動化します。
Docker とレジストリの概念の詳細については、Docker Docs 上の「Docker の概要」と「レジストリ、リポジトリ、イメージについて」を参照してください。
ユース ケース
Azure コンテナー レジストリからさまざまなデプロイ ターゲットにイメージをプルできます。
- Kubernetes、DC/OS、Docker Swarm など、ホストから成るクラスターにわたってコンテナー化されたアプリケーションを管理するスケーラブルなオーケストレーション システム。
- Azure Kubernetes Service (AKS) や App Service、Batch、Service Fabric など、大規模なアプリケーションのビルドと実行をサポートする "Azure サービス"。
開発者は、コンテナー開発ワークフローの一環としてコンテナー レジストリにプッシュすることもできます。 たとえば、Azure Pipelines や Jenkins などの 継続的インテグレーションと継続的デリバリー (CI/CD) ツールからコンテナー レジストリをターゲットにすることができます。
ベース イメージが更新されたときにアプリケーション イメージを自動的にリビルドするように Azure Container Registry タスクを構成するか、チームがコードを Git リポジトリにコミットしたときのイメージ ビルドを自動化します。 クラウドで並列的にコンテナー イメージのビルド、テスト、パッチ適用を自動化するためのマルチステップ タスクを作成します。
Azure には、Azure CLI、Azure portal、API サポートなど、コンテナー レジストリを管理するためのツールが用意されています。 必要に応じて、Visual Studio Code 用の Docker 拡張機能と Azure アカウント拡張機能をインストールします。 これらの拡張機能を使用すると、コンテナー レジストリからのイメージのプル、コンテナー レジストリへのイメージのプッシュ、Azure Container Registry タスクの実行などをすべて Visual Studio Code 内で実行できます。
主要な機能
レジストリのサービス レベル - Azure サブスクリプション内に 1 つまたは複数のコンテナー レジストリを作成します。 レジストリは、Basic、Standard、Premium の 3 つのレベルで利用できます。 各レベルでは、Webhook 統合、Microsoft Entra ID を使用したレジストリ認証、および削除機能がサポートされています。
デプロイと同じ Azure の場所にレジストリを作成することで、ネットワーク上の近い場所にローカルで保存されたコンテナー イメージを活用します。 高度なレプリケーションとコンテナー イメージの配布を行うには Premium レジストリの geo レプリケーション機能を使用します。
セキュリティとアクセス: Azure CLI または標準の
docker login
コマンドを使用して、レジストリにログインします。 Azure Container Registry は HTTPS 経由でコンテナー イメージを転送します。また、クライアント接続をセキュリティで保護するための TLS をサポートしています。重要
2020 年 1 月 13 日以降、Azure Container Registry では、サーバーとアプリケーションからのセキュリティで保護されたすべての接続で TLS 1.2 を使用することが必要になりました。 最近の Docker クライアント (バージョン 18.03.0 以降) を使用することで TLS 1.2 を有効にします。
Azure ID、Microsoft Entra サービス プリンシパル、または提供された管理者アカウントを使用することで、コンテナー レジストリへのアクセスを制御します。 Azure ロールベースのアクセス制御 (RBAC) を使用して、特定のレジストリへのアクセス許可をユーザーまたはシステムに割り当てます。
Premium サービス レベルのセキュリティ機能には、イメージ タグに署名するためのコンテンツの信頼や、レジストリへのアクセスを制限するファイアウォールと仮想ネットワーク (プレビュー) などがあります。 Microsoft Defender for Cloud は、イメージをレジストリにプッシュするたびにイメージをスキャンするために必要に応じて Azure Container Registry と統合されます。
サポートされるイメージと成果物: イメージが 1 つのリポジトリ内にグループ化される場合、各イメージは Docker 互換コンテナーの読み取り専用スナップショットとなります。 Azure コンテナー レジストリには、Windows と Linux の両方のイメージを含めることができます。 すべてのコンテナーのデプロイのイメージ名を制御できます。
標準の Docker コマンドを使用して、イメージをリポジトリにプッシュしたり、イメージをリポジトリからプルします。 Azure Container Registry は、Docker コンテナー イメージに加えて、Helm チャートのような関連コンテンツの形式および Open Container Initiative (OCI) のイメージ形式の仕様に基づいて構築されたイメージを格納します。
自動化されたイメージ ビルド: Azure Container Registry タスクを使用して、Azure でのイメージのビルド、テスト、プッシュ、デプロイを効率化します。 たとえば、Azure Container Registry タスクを使用して、
docker build
操作を Azure にオフロードすることで、開発の内部的なループをクラウドに拡張します。 ビルド タスクの設定では、コンテナーの OS およびフレームワーク パッチ適用 パイプラインを自動化し、ソース コントロールにコードがコミットされたときに自動的にイメージがビルドされるよう指定できます。マルチステップ タスクでは、クラウドでのコンテナー イメージのビルド、テスト、および修正プログラムの適用のために、ステップベースでタスクの定義と実行を行うことができます。 タスクのステップでは、コンテナー イメージの個々のビルド操作とプッシュ操作を定義します。 1 つまたは複数のコンテナーの実行を定義することも可能で、この際に各ステップはコンテナーをそれぞれの実行環境として使用します。