Azure Container Instances のコンテナー グループContainer groups in Azure Container Instances

Azure Container Instances の最上位のリソースは、コンテナー グループです。The top-level resource in Azure Container Instances is the container group. この記事では、コンテナー グループとは何か、およびそれらによってどのような種類のシナリオが有効になるかを説明します。This article describes what container groups are and the types of scenarios they enable.

コンテナー グループとはWhat is a container group?

コンテナー グループは、同じホスト コンピューター上にスケジュール設定されるコンテナーのコレクションです。A container group is a collection of containers that get scheduled on the same host machine. コンテナー グループ内のコンテナーでは、ライフサイクル、リソース、ローカル ネットワーク、ストレージ ボリュームを共有します。The containers in a container group share a lifecycle, resources, local network, and storage volumes. これは、Kubernetes におけるポッドの概念に似ています。It's similar in concept to a pod in Kubernetes.

次の図は、複数のコンテナーを含むコンテナー グループの例を示しています。The following diagram shows an example of a container group that includes multiple containers:

コンテナー グループ ダイアグラム

この例のコンテナー グループは:This example container group:

  • 単一のホスト コンピューター上にスケジュール設定されます。Is scheduled on a single host machine.
  • DNS 名ラベルが割り当てられます。Is assigned a DNS name label.
  • 単一のパブリック IP アドレスを公開し、1 つの公開ポートを持ちます。Exposes a single public IP address, with one exposed port.
  • 次の 2 つのコンテナーから構成されます。Consists of two containers. 片方のコンテナーはポート 80 でリッスンし、他方のポートはポート 5000 でリッスンします。One container listens on port 80, while the other listens on port 5000.
  • ボリューム マウントとして 2 つの Azure ファイル共有が含まれています。各コンテナーは共有のいずれかをローカルにマウントします。Includes two Azure file shares as volume mounts, and each container mounts one of the shares locally.

注意

現在、複数コンテナー グループでサポートされているのは、Linux コンテナーのみです。Multi-container groups currently support only Linux containers. Windows コンテナーの場合、Azure Container Instances では、1 つのコンテナー インスタンスのデプロイのみをサポートします。For Windows containers, Azure Container Instances only supports deployment of a single container instance. Microsoft ではすべての機能を Windows コンテナーにも取り入れるように取り組んでいますが、現在のプラットフォームの違いは、サービスの概要に関するページで確認できます。While we are working to bring all features to Windows containers, you can find current platform differences in the service Overview.

デプロイDeployment

複数コンテナー グループをデプロイするには、一般的な方法が 2 つあります: Resource Manager テンプレートまたは YAML ファイルを使用します。Here are two common ways to deploy a multi-container group: use a Resource Manager template or a YAML file. コンテナー インスタンスのデプロイ時に追加の Azure サービス リソース (Azure Files 共有など) をデプロイする必要がある場合は、Resource Manager テンプレートをお勧めします。A Resource Manager template is recommended when you need to deploy additional Azure service resources (for example, an Azure Files share) when you deploy the container instances. YAML フォーマットは簡潔であるため、デプロイにコンテナー インスタンスのみが含まれている場合は、YAML ファイルをお勧めします。Due to the YAML format's more concise nature, a YAML file is recommended when your deployment includes only container instances. 設定できるプロパティの詳細については、「Resource Manager テンプレート リファレンス」または「YAML リファレンス」のドキュメントを参照してください。For details on properties you can set, see the Resource Manager template reference or YAML reference documentation.

コンテナー グループの構成を保持するために、Azure CLI の az container export コマンドを使用して、YAML ファイルに構成をエクスポートできます。To preserve a container group's configuration, you can export the configuration to a YAML file by using the Azure CLI command az container export. エクスポートによって、バージョン コントロールでコンテナー グループの構成を「コードとしての構成」として格納できます。Export allows you to store your container group configurations in version control for "configuration as code." または、エクスポートしたファイルを YAML で新しい構成を作成する際の出発点として使用します。Or, use the exported file as a starting point when developing a new configuration in YAML.

リソース割り当てResource allocation

Azure Container Instances では、グループにインスタンスのリソース要求を追加することで、CPU、メモリ、必要に応じて GPU (プレビュー) などのリソースをマルチコンテナー グループに割り当てます。Azure Container Instances allocates resources such as CPUs, memory, and optionally GPUs (preview) to a multi-container group by adding the resource requests of the instances in the group. たとえば、CPU リソースを例に挙げると、それぞれが 1 CPU を要求する 2 つのコンテナー インスタンスを持つ 1 つのコンテナー グループを作成すると、コンテナー グループに 2 CPU が割り当てられます。Taking CPU resources as an example, if you create a container group with two container instances, each requesting 1 CPU, then the container group is allocated 2 CPUs.

コンテナー インスタンス別のリソース使用量Resource usage by container instances

グループ内の各コンテナー インスタンスには、そのリソース要求で指定されたリソースが割り当てられます。Each container instance in a group is allocated the resources specified in its resource request. ただし、省略可能なリソース制限プロパティを構成している場合、グループ内のコンテナー インスタンスに使用される最大リソースが異なる場合があります。However, the maximum resources used by a container instance in a group could be different if you configure its optional resource limit property. コンテナー インスタンスのリソース制限は、必須のリソース要求プロパティ以上にする必要があります。The resource limit of a container instance must be greater than or equal to the mandatory resource request property.

  • リソース制限を指定しない場合、コンテナー インスタンスの最大リソース使用量はそのリソース要求と同じになります。If you don't specify a resource limit, the container instance's maximum resource usage is the same as its resource request.

  • コンテナー インスタンスの制限を指定した場合、インスタンスの最大使用量は要求よりも大きくなり、設定した上限に達する可能性があります。If you specify a limit for a container instance, the instance's maximum usage could be greater than the request, up to the limit you set. それに応じて、グループ内の他のコンテナー インスタンスによるリソースの使用量が減少する可能性があります。Correspondingly, resource usage by other container instances in the group could decrease. コンテナー インスタンスに設定できるリソース制限の最大値は、グループに割り当てられているリソース合計になります。The maximum resource limit you can set for a container instance is the total resources allocated to the group.

たとえば、あるグループに属する 2 つのコンテナー インスタンスがそれぞれ 1 CPU を要求するとき、あるコンテナーで実行されるワークロードが他のコンテナーのそれと比べ、多くの CPU 実行を要求することがあります。For example, in a group with two container instances each requesting 1 CPU, one of your containers might run a workload that requires more CPUs to run than the other.

このシナリオでは、コンテナー インスタンスに対して 2 CPU のリソース制限を設定できます。In this scenario, you could set a resource limit of 2 CPUs for the container instance. この構成にすると、コンテナー インスタンスには使用可能な場合に最大 2 CPU まで使用できます。This configuration allows the container instance to use up to the full 2 CPUs if available.

最小値と最大値の割り当てMinimum and maximum allocation

  • 最小値の 1 CPU と 1 GB メモリをコンテナー グループに割り当てます。Allocate a minimum of 1 CPU and 1 GB of memory to a container group. グループ内の個々のコンテナー インスタンスは、1 CPU と 1 GB メモリ未満でプロビジョニングできます。Individual container instances within a group can be provisioned with less than 1 CPU and 1 GB of memory.

  • コンテナー グループ内の最大リソースについては、デプロイ リージョンでの Azure Container Instances に対するリソースの可用性に関するページを参照してください。For the maximum resources in a container group, see the resource availability for Azure Container Instances in the deployment region.

ネットワークNetworking

コンテナー グループは、外部に接続する IP アドレス、その IP アドレス上の 1 つ以上のポート、完全修飾ドメイン名 (FQDN) を持つ DNS ラベルを共有することができます。Container groups can share an external-facing IP address, one or more ports on that IP address, and a DNS label with a fully qualified domain name (FQDN). 外部クライアントがグループ内のコンテナーにアクセスできるようにするには、IP アドレスのポートをコンテナーから公開する必要があります。To enable external clients to reach a container within the group, you must expose the port on the IP address and from the container. グループ内のコンテナーがポートの名前空間を共有するため、ポートのマッピングはサポートされません。Because containers within the group share a port namespace, port mapping isn't supported. コンテナー グループの IP アドレスと FQDN は、コンテナー グループを削除すると解放されます。A container group's IP address and FQDN will be released when the container group is deleted.

コンテナー グループ内では、コンテナー インスタンスは任意のポートの localhost を通じて相互にアクセスできます。それらのポートがグループの IP アドレスまたはコンテナーで外部に公開されていなくてもかまいません。Within a container group, container instances can reach each other via localhost on any port, even if those ports aren't exposed externally on the group's IP address or from the container.

必要に応じて、Azure 仮想ネットワークにコンテナー グループをデプロイして、コンテナーで仮想ネットワーク内の他のリソースと安全に通信できるようにします。Optionally deploy container groups into an Azure virtual network to allow containers to communicate securely with other resources in the virtual network.

ストレージStorage

コンテナー グループにマウントする外部ボリュームを指定できます。You can specify external volumes to mount within a container group. サポートされるボリュームは次のとおりです。Supported volumes include:

これらのボリュームは、グループの個別のコンテナーの特定のパスにマップできます。You can map those volumes into specific paths within the individual containers in a group.

一般的なシナリオCommon scenarios

複数コンテナー グループは、1 つの機能タスクを少数のコンテナー イメージに分割する場合に便利です。Multi-container groups are useful in cases where you want to divide a single functional task into a small number of container images. これらのイメージは複数のチームによって配布可能であり、異なるリソース要件を持っています。These images can then be delivered by different teams and have separate resource requirements.

次のような使用例が考えられます。Example usage could include:

  • Web アプリケーションにサービスを提供するコンテナーとソース管理から最新のコンテンツをプルするコンテナー。A container serving a web application and a container pulling the latest content from source control.
  • アプリケーション コンテナーとログ記録コンテナー。An application container and a logging container. ログ記録コンテナーは、メイン アプリケーションによって出力されるログとメトリックを収集し、長期保存される記憶域に書き込みます。The logging container collects the logs and metrics output by the main application and writes them to long-term storage.
  • アプリケーション コンテナーと監視コンテナー。An application container and a monitoring container. 監視コンテナーは、要求を定期的にアプリケーションに送信して、アプリケーションが実行中であり、正常に応答していることを確認します。そうでない場合はアラートを発生させます。The monitoring container periodically makes a request to the application to ensure that it's running and responding correctly, and raises an alert if it's not.
  • フロントエンド コンテナーとバックエンド コンテナー。A front-end container and a back-end container. フロントエンドは、データを取得するためにサービスを実行しているバックエンドと共に、Web アプリケーションを提供する可能性があります。The front end might serve a web application, with the back end running a service to retrieve data.

次のステップNext steps

Azure Resource Manager テンプレートを使用してマルチコンテナーのコンテナー グループをデプロイする方法を確認します。Learn how to deploy a multi-container container group with an Azure Resource Manager template: