Service Fabric とコンテナーService Fabric and containers

はじめにIntroduction

Azure Service Fabric は、スケーラブルで信頼性に優れたマイクロサービスとコンテナーのパッケージ化とデプロイ、管理を簡単に行うことができる分散システム プラットフォームです。Azure Service Fabric is a distributed systems platform that makes it easy to package, deploy, and manage scalable and reliable microservices and containers.

Service Fabric は、マシン クラスター全体にマイクロサービスをデプロイする Microsoft のコンテナー オーケストレーターです。Service Fabric is Microsoft's container orchestrator for deploying microservices across a cluster of machines. Service Fabric には、長年にわたる Microsoft の大規模なサービスの提供から得た教訓が生きています。Service Fabric benefits from the lessons learned during its years running services at Microsoft at massive scale.

Service Fabric プログラミング モデルASP.NET Core の使用から任意のコードのデプロイまで、多くの方法でマイクロサービスを開発することができます。Microservices can be developed in many ways from using the Service Fabric programming models, ASP.NET Core, to deploying any code of your choice. コンテナーのデプロイと管理だけを行う場合でも、Service Fabric は優れた選択肢です。Or, if you just want to deploy and manage containers, Service Fabric is also a great choice.

既定では、Service Fabric はこれらのサービスをプロセスとしてデプロイし、アクティブ化します。By default, Service Fabric deploys and activates these services as processes. プロセスとしてこれらを実施することで、これまでになくアクティブ化が高速になり、クラスターにおけるリソースの使用に無駄もなくなります。Processes provide the fastest activation and highest density usage of the resources in a cluster. さらに、Service Fabric では、コンテナー イメージ内のサービスもデプロイできます。Service Fabric can also deploy services in container images. プロセスとしてのサービスとコンテナー内のサービスを同じアプリケーション内で混在させることもできます。You can also mix services in processes, and services in containers, in the same application.

Service Fabric をすぐに開始し、コンテナーを試してみるには、クイック スタート、チュートリアル、またはサンプルを使用してください。To jump right in and try out containers on Service Fabric, try a quickstart, tutorial, or sample:

クイック スタート:Linux コンテナー アプリケーションを Service Fabric にデプロイするQuickstart: Deploy a Linux container application to Service Fabric
クイック スタート:Windows コンテナー アプリケーションを Service Fabric にデプロイするQuickstart: Deploy a Windows container application to Service Fabric
既存の .NET アプリをコンテナー化するContainerize an existing .NET app
Service Fabric コンテナーのサンプルService Fabric Container Samples

コンテナーとはWhat are containers

コンテナーは、異なるコンピューティング環境でアプリケーションを確実に実行するという問題を、アプリケーションを実行するための不変の環境を提供することで解決します。Containers solve the problem of running applications reliably in different computing environments by providing an immutable environment for the application to run in. コンテナーは、アプリケーションとそのすべての依存関係 (ライブラリや構成ファイルなど) を、コンテナー内でソフトウェアを実行するために必要なものをすべて格納する独自の分離された "ボックス" にラップします。Containers wrap an application and all of its dependencies, such as libraries and configuration files, into its own isolated 'box' that contains everything needed to run the software inside the container. コンテナーの実行場所に関係なく、その中のアプリケーションは、適切なバージョンの依存するライブラリーや構成ファイルなど、実行するために必要なすべてのものを常に持っています。Wherever the container runs, the application inside it always has everything it needs to run such as the right versions of its dependent libraries, any configuration files, and anything else it needs to run.

コンテナーはカーネル上で直接動作し、ファイルシステムなどのリソースの分離されたビューを備えています。Containers run directly on top of the kernel and have an isolated view of the file system and other resources. コンテナー内のアプリケーションは、コンテナーの外のアプリケーションやプロセスを認識しません。An application in a container has no knowledge of any other applications or processes outside of its container. 各アプリケーションとそのランタイム、依存関係、およびシステム ライブラリは、コンテナー内で動作し、オペレーティング システムのコンテナー独自の分離されたビューへの完全なプライベート アクセスが提供されます。Each application and its runtime, dependencies, and system libraries run inside a container with full, private access to the container's own isolated view of the operating system. 異なるコンピューティング環境で実行するために必要なアプリケーションのすべての依存関係を簡単に用意できることに加え、セキュリティとリソースの分離も Service Fabric でコンテナーを使用することの重要なメリットです。それ以外の場合、サービスはプロセス内で実行されます。In addition to making it easy to provide all of your application's dependencies it needs to run in different computing environments, security and resource isolation are important benefits of using containers with Service Fabric--which otherwise runs services in a process.

仮想マシンと比較して、コンテナーには次の利点があります。Compared to virtual machines, containers have the following advantages:

  • Small:コンテナーは 1 つのストレージ領域を使用し、複数のバージョンと更新プログラムを階層化することで効率を高めています。Small: Containers use a single storage space and layer versions and updates to increase efficiency.
  • 高速:コンテナーはオペレーティング システム全体を再起動する必要がないため、はるかに高速に (通常は秒単位で) 起動できます。Fast: Containers don’t have to boot an entire operating system, so they can start much faster--typically in seconds.
  • 移植性:コンテナー化されたアプリケーションのイメージを、クラウドまたはオンプレミスで実行されるように移植することができます。仮想マシンへの移植または物理マシン上への直接の移植が可能です。Portability: A containerized application image can be ported to run in the cloud, on premises, inside virtual machines, or directly on physical machines.
  • リソース ガバナンス:コンテナーがホスト上で利用する物理リソースを制限できるようにします。Resource governance: A container can limit the physical resources that it can consume on its host.

コンテナーの種類とサポートされる環境Container types and supported environments

Service Fabric は Linux と Windows の両方でコンテナーをサポートしています。また、Windows では Hyper-V の分離モードをサポートします。Service Fabric supports containers on both Linux and Windows, and supports Hyper-V isolation mode on Windows.

Linux 上の Docker コンテナーDocker containers on Linux

Docker は、Linux カーネル コンテナー上でコンテナーを作成、管理するための API を提供します。Docker provides APIs to create and manage containers on top of Linux kernel containers. Docker Hub は、コンテナー イメージの格納と取得に使用する中央リポジトリを提供します。Docker Hub provides a central repository to store and retrieve container images. Linux ベースのチュートリアルについては、「Linux で初めての Service Fabric コンテナー アプリケーションを作成する」を参照してください。For a Linux-based tutorial, see Create your first Service Fabric container application on Linux.

Windows Server コンテナーWindows Server containers

Windows Server 2016 には、分離レベルの異なる 2 種類のコンテナーが用意されています。Windows Server 2016 provides two different types of containers that differ by level of isolation. Windows Server コンテナーと Docker コンテナーは、名前空間とファイル システムは分離されていますが、それが実行されているホストとカーネルを共有するという点で似ています。Windows Server containers and Docker containers are similar because both have namespace and file system isolation, while sharing the kernel with the host they are running on. Linux では、cgroups や名前空間によって分離を行うのが通例でした。Windows Server コンテナーも同様に動作します。On Linux, this isolation has traditionally been provided by cgroups and namespaces, and Windows Server containers behave similarly.

Hyper-V をサポートする Windows コンテナーでは、各コンテナーがオペレーティング システム カーネルを他のコンテナーまたはホストと共有しないため、より多くの分離とセキュリティが提供されます。Windows containers with Hyper-V support provide more isolation and security because no container shares the operating system kernel with any other container, or with the host. この高度なセキュリティの分離により、Hyper-V コンテナーは、潜在的に敵対するマルチテナント シナリオで効果を発揮します。With this higher level of security isolation, Hyper-V enabled containers are targeted at potentially hostile, multi-tenant scenarios. Windows ベースのチュートリアルについては、「Windows で初めての Service Fabric コンテナー アプリケーションを作成する」を参照してください。For a Windows-based tutorial, see Create your first Service Fabric container application on Windows.

次の図は、利用可能な異なる種類の仮想化と分離のレベルを示しています。The following figure shows the different types of virtualization and isolation levels available. Service Fabric プラットフォームService Fabric platform

コンテナーを使用するシナリオScenarios for using containers

コンテナーの選択が望まれる一般的な例を以下に示します。Here are typical examples where a container is a good choice:

  • IIS のリフトとシフト:既存の ASP.NET MVC アプリを ASP.NET Core に移行する代わりにコンテナー内に配置できます。IIS lift and shift: You can put an existing ASP.NET MVC app in a container instead of migrating it to ASP.NET Core. これらの ASP.NET MVC アプリケーションは、インターネット インフォメーション サービス (IIS) に依存します。These ASP.NET MVC apps depend on Internet Information Services (IIS). このようなアプリケーションは、事前に作成された IIS イメージからコンテナー イメージにパッケージ化し、Service Fabric でデプロイすることができます。You can package these applications into container images from the precreated IIS image and deploy them with Service Fabric. Windows コンテナーの作成方法については、「Windows Server のコンテナー イメージ」を参照してください。See Container Images on Windows Server for information about Windows containers.

  • コンテナーと Service Fabric マイクロサービスの混在使用:アプリケーションの一部として、既存のコンテナー イメージを使用できます。Mix containers and Service Fabric microservices: Use an existing container image for part of your application. たとえば、より多くのバックエンド計算に対応するために、アプリケーションやステートフル サービスの Web フロントエンドに NGINX コンテナーを使用できます。For example, you might use the NGINX container for the web front end of your application and stateful services for the more intensive back-end computation.

  • "うるさい隣人" サービスの影響の軽減:コンテナーのリソース ガバナンス機能を使用して、サービスがホスト上で使用するリソースを制限することができます。Reduce impact of "noisy neighbors" services: You can use the resource governance ability of containers to restrict the resources that a service uses on a host. サービスが多くのリソースを使用し、他の操作のパフォーマンスに影響を及ぼす可能性がある場合 (実行時間の長いクエリのような操作など)、リソース ガバナンス機能を備えたコンテナーにそれらのサービスを配置することを検討してください。If services might consume many resources and affect the performance of others (such as a long-running, query-like operation), consider putting these services into containers that have resource governance.

Service Fabric によるコンテナーのサポートService Fabric support for containers

Service Fabric では、Linux での Docker コンテナーのデプロイと、Windows Server 2016 での Windows Server コンテナーのデプロイをサポートしています。また、Hyper-V の分離モードもサポートしています。Service Fabric supports the deployment of Docker containers on Linux, and Windows Server containers on Windows Server 2016, along with support for Hyper-V isolation mode.

Service Fabric は、アプリケーション モデルを提供します。このモデルでは、コンテナーは、複数のレプリカがその中に配置されるアプリケーション ホストを表わします。Service Fabric provides an application model in which a container represents an application host in which multiple service replicas are placed. Service Fabric は、ゲスト実行可能ファイル シナリオもサポートします。このシナリオでは、組み込みの Service Fabric プログラミング モデルではなく、任意の言語またはフレームワークを使用して記述されている既存のアプリケーションをコンテナー内にパッケージ化します。Service Fabric also supports a guest executable scenario in which you don't use the built-in Service Fabric programming models but instead package an existing application, written using any language or framework, inside a container. このシナリオは、コンテナーの一般的なユースケースです。This scenario is the common use-case for containers.

コンテナー内の Service Fabric サービスを実行することもできます。You can also run Service Fabric services inside a container. コンテナー内の Service Fabric サービスの実行のサポートは、現時点では限定されています。Support for running Service Fabric services inside containers is currently limited.

Service Fabric には、コンテナー化されたマイクロサービスで構成されたアプリケーションの構築に役立つさまざまなコンテナー機能が用意されています。Service Fabric provides several container capabilities that help you build applications that are composed of containerized microservices, such as:

  • コンテナー イメージのデプロイとアクティブ化Container image deployment and activation.
  • Azure クラスターでのリソース値の既定の設定を含むリソース ガバナンスResource governance including setting resource values by default on Azure clusters.
  • リポジトリの認証Repository authentication.
  • コンテナー ポートからホスト ポートへのマッピングContainer port to host port mapping.
  • コンテナー間での検出と通信Container-to-container discovery and communication.
  • 環境変数の構成と設定の機能Ability to configure and set environment variables.
  • コンテナーにセキュリティ資格情報を設定する機能Ability to set security credentials on the container.
  • コンテナーに対する異なるネットワーク モードの選択A choice of different networking modes for containers.

Azure Kubernetes Service での Kubernetes クラスターの作成方法や Azure Container Registry へのプライベート Docker レジストリの作成方法など、Azure でのコンテナーのサポートの包括的な概要については、「Azure for Containers」を参照してください。For a comprehensive overview of container support on Azure, such as how to create a Kubernetes cluster with Azure Kubernetes Service, how to create a private Docker registry in Azure Container Registry, and more, see Azure for Containers.

次の手順Next steps

この記事では、コンテナーを実行するために Service Fabric が提供するサポートについて説明しました。In this article, you learned about the support Service Fabric provides for running containers. 次に、各機能の例の紹介と、その使用方法の解説に進みます。Next, we will go over examples of each of the features to show you how to use them.

Linux で初めての Service Fabric コンテナー アプリケーションを作成するCreate your first Service Fabric container application on Linux
Windows で初めての Service Fabric コンテナー アプリケーションを作成するCreate your first Service Fabric container application on Windows
Windows コンテナーの詳細Learn more about Windows Containers