Azure Service Fabric での Docker Compose のデプロイメントのサポート (プレビュー)Docker Compose deployment support in Azure Service Fabric (Preview)

Docker は、複数コンテナー アプリケーションの定義に docker-compose.yml ファイルを使用します。Docker uses the docker-compose.yml file for defining multi-container applications. Docker を使用した Azure Service Fabric での既存のコンテナー アプリケーションの調整を理解しやすくするため、プラットフォームでネイティブに Docker Compose をデプロイするためのプレビュー版サポートが含められています。To make it easy for customers familiar with Docker to orchestrate existing container applications on Azure Service Fabric, we have included preview support for Docker Compose deployment natively in the platform. Service Fabric は docker-compose.yml ファイルのバージョン 3 以降を受け入れることができます。Service Fabric can accept version 3 and later of docker-compose.yml files.

このサポートはプレビュー段階であるため、Compose ディレクティブのサブセットのみがサポートされます。Because this support is in preview, only a subset of Compose directives is supported.

このプレビューを使用するには、Azure Portal でバージョン 5.7 以降の Service Fabric ランタイムを使用し、対応する SDK も使用してクラスターを作成します。To use this preview, create your cluster with version 5.7 or greater of the Service Fabric runtime through the Azure portal along with the corresponding SDK.


この機能はプレビュー段階であり、実稼働環境ではサポートされません。This feature is in preview and is not supported in production. 次の例では、ランタイム バージョン 6.0 および SDK version 2.8 が使用されています。The examples below are based on runtime version 6.0 and SDK version 2.8.

Service Fabric に Docker Compose ファイルをデプロイするDeploy a Docker Compose file on Service Fabric

以下のコマンドでは、他の Service Fabric アプリケーションのように監視および管理できる (fabric:/TestContainerApp という名前の) Service Fabric アプリケーションが作成されます。The following commands create a Service Fabric application (named fabric:/TestContainerApp), which you can monitor and manage like any other Service Fabric application. 正常性クエリに指定したアプリケーション名を使用することができます。You can use the specified application name for health queries. Service Fabric は、"DeploymentName"を Compose デプロイメントの識別子として認識します。Service Fabric recognizes "DeploymentName" as the identifier of the Compose deployment.

PowerShell の使用Use PowerShell

PowerShell で次のコマンドを実行して、docker-compose.yml ファイルから Service Fabric Compose のデプロイを作成します。Create a Service Fabric Compose deployment from a docker-compose.yml file by running the following command in PowerShell:

New-ServiceFabricComposeDeployment -DeploymentName TestContainerApp -Compose docker-compose.yml [-RegistryUserName <>] [-RegistryPassword <>] [-PasswordEncrypted]

RegistryUserName および RegistryPassword は、コンテナー レジストリのユーザー名とパスワードです。RegistryUserName and RegistryPassword refer to the container registry username and password. デプロイが完成したら、次のコマンドを使用して、その状態を確認できます。After you've completed the deployment, you can check its status by using the following command:

Get-ServiceFabricComposeDeploymentStatus -DeploymentName TestContainerApp

PowerShell で Compose のデプロイを削除するには、次のコマンドを使用します。To delete the Compose deployment through PowerShell, use the following command:

Remove-ServiceFabricComposeDeployment  -DeploymentName TestContainerApp

PowerShell を使用して Compose デプロイメントをアップグレードするには、次のコマンドを使用します。To start a Compose deployment upgrade through PowerShell, use the following command:

Start-ServiceFabricComposeDeploymentUpgrade -DeploymentName TestContainerApp -Compose docker-compose-v2.yml -Monitored -FailureAction Rollback

PowerShell を使用して Compose デプロイのアップグレードをロールバックするには、次のコマンドを使用します。To rollback the Compose deployment upgrade through PowerShell, use the following command:

Start-ServiceFabricComposeDeploymentRollback -DeploymentName TestContainerApp

アップグレードを承諾すると、次のコマンドを使用して、アップグレードの進行状況を追跡できます。After upgrade is accepted, the upgrade progress could be tracked using the following command:

Get-ServiceFabricComposeDeploymentUpgrade -DeploymentName TestContainerApp

Azure Service Fabric CLI (sfctl) の使用Use Azure Service Fabric CLI (sfctl)

次の Service Fabric CLI コマンドを使用することもできます。Alternatively, you can use the following Service Fabric CLI command:

sfctl compose create --deployment-name TestContainerApp --file-path docker-compose.yml [ [ --user --encrypted-pass ] | [ --user --has-pass ] ] [ --timeout ]

デプロイメントが作成されたら、次のコマンドを使用して、その状態を確認できます。After you've created the deployment, you can check its status by using the following command:

sfctl compose status --deployment-name TestContainerApp [ --timeout ]

Compose デプロイを削除するには、次のコマンドを使用します。To delete the Compose deployment, use the following command:

sfctl compose remove  --deployment-name TestContainerApp [ --timeout ]

Compose デプロイメントをアップグレードするには、次のコマンドを使用します。To start a Compose deployment upgrade, use the following command:

sfctl compose upgrade --deployment-name TestContainerApp --file-path docker-compose-v2.yml [ [ --user --encrypted-pass ] | [ --user --has-pass ] ] [--upgrade-mode Monitored] [--failure-action Rollback] [ --timeout ]

Compose デプロイのアップグレードをロールバックするには、次のコマンドを使用します。To rollback the Compose deployment upgrade, use the following command:

sfctl compose upgrade-rollback --deployment-name TestContainerApp [ --timeout ]

アップグレードを承諾すると、次のコマンドを使用して、アップグレードの進行状況を追跡できます。After upgrade is accepted, the upgrade progress could be tracked using the following command:

sfctl compose upgrade-status --deployment-name TestContainerApp

サポートされる Compose ディレクティブSupported Compose directives

このプレビューでは、以下のプリミティブを含む、Compose バージョン 3 形式からの構成オプションのサブセットがサポートされます。This preview supports a subset of the configuration options from the Compose version 3 format, including the following primitives:

  • サービス > デプロイ > レプリカServices > Deploy > Replicas
  • サービス > デプロイ > 位置 > 制約Services > Deploy > Placement > Constraints
  • サービス > デプロイ > リソース > 制限Services > Deploy > Resources > Limits
    • -cpu-shares-cpu-shares
    • -memory-memory
    • -memory-swap-memory-swap
  • サービス > コマンドServices > Commands
  • サービス > 環境Services > Environment
  • サービス > ポートServices > Ports
  • サービス > イメージServices > Image
  • サービス > 分離 (Windows の場合のみ)Services > Isolation (only for Windows)
  • サービス > ログ > ドライバーServices > Logging > Driver
  • サービス > ログ > ドライバー > オプションServices > Logging > Driver > Options
  • ボリューム & デプロイ > ボリュームVolume & Deploy > Volume

Service Fabric のリソース ガバナンスの説明に従って、リソースの制限を適用するようにクラスターをセットアップします。Set up the cluster for enforcing resource limits, as described in Service Fabric resource governance. 他のすべての Docker Compose ディレクティブは、このプレビューではサポートされていません。All other Docker Compose directives are unsupported for this preview.

ポート セクションPorts section

Service Fabric サービス リスナーによって使用されるポート セクションでは、http または https プロトコルを指定します。Specify either the http or https protocol in the Ports section that will be used by the Service Fabric service listener. これにより、エンドポイント プロトコルがネーム サービスによって正常に公開され、リバース プロキシが要求の転送を許可されるようになります。This will ensure that the endpoint protocol is published correctly with the naming service to allow reverse proxy to forward the requests:

  • セキュリティで保護されていない Service Fabric Compose サービスをルーティングするには、 /http を指定します。To route to unsecure Service Fabric Compose services, specify /http. 例 - "80:80/http"For example, - "80:80/http".
  • セキュリティで保護された Service Fabric Compose サービスをルーティングするには、 /https を指定します。To route to secure Service Fabric Compose services, specify /https. 例 - "443:443/https"For example, - "443:443/https".


/http および /https ポート セクションの構文は、適切な Service Fabric リスナーの URL を登録する Service Fabric に固有です。The /http and /https Ports section syntax is specific to Service Fabric to register the correct Service Fabric listener URL. Docker Compose ファイルの構文がプログラムによって検証される場合、検証エラーが発生する可能性があります。If the Docker compose file syntax is programmatically validated, it may cause a validation error.

ServiceDnsName 計算ServiceDnsName computation

Compose ファイルで指定したサービス名が完全修飾ドメイン名である (つまり、ドット "." が含まれている) 場合、Service Fabric によって登録される DNS 名は <ServiceName> (ドットを含む) となります。If the service name that you specify in a Compose file is a fully qualified domain name (that is, it contains a dot [.]), the DNS name registered by Service Fabric is <ServiceName> (including the dot). そうでない場合は、アプリケーション名の各パス セグメントが、最上位レベルのドメイン ラベルになる最初のパス セグメントを持つ、サービス DNS 名でのドメイン ラベルになります。If not, each path segment in the application name becomes a domain label in the service DNS name, with the first path segment becoming the top-level domain label.

たとえば、指定されたアプリケーション名が fabric:/SampleApp/MyComposeApp の場合、登録される DNS 名は <ServiceName>.MyComposeApp.SampleApp になります。For example, if the specified application name is fabric:/SampleApp/MyComposeApp, <ServiceName>.MyComposeApp.SampleApp would be the registered DNS name.

Service Fabric アプリケーション モデル (型定義) と Compose デプロイメント (インスタンス定義) の違いCompose deployment (instance definition) versus Service Fabric app model (type definition)

docker-compose.yml ファイルでは、プロパティと構成を含む、コンテナーのデプロイ可能なセットが記述されています。A docker-compose.yml file describes a deployable set of containers, including their properties and configurations. たとえば、このファイルには環境変数やポートを含めることができます。For example, the file can contain environment variables and ports. 位置の制約、リソースの制限、および DNS 名などのデプロイ パラメーターも、docker-compose.yml ファイルで指定できます。You can also specify deployment parameters, such as placement constraints, resource limits, and DNS names, in the docker-compose.yml file.

Service Fabric アプリケーション モデルは、サービスの種類とアプリケーションの種類を使います。ここでは、同じ種類の多くのアプリケーション インスタンスを持つことができます。The Service Fabric application model uses service types and application types, where you can have many application instances of the same type. たとえば、顧客ごとに 1 つのアプリケーション インスタンスを使うことができます。For example, you can have one application instance per customer. この種類ベースのモデルは、ランタイムに登録されている同じアプリケーションの種類の複数のバージョンをサポートします。This type-based model supports multiple versions of the same application type that's registered with the runtime.

たとえば、顧客 A は AppTypeA の種類 1.0 でインスタンス化されたアプリケーションを持つことができ、顧客 B は同じ種類とバージョンでインスタンス化された別のアプリケーションを持つことができます。For example, customer A can have an application instantiated with type 1.0 of AppTypeA, and customer B can have another application instantiated with the same type and version. アプリケーション マニフェストでアプリケーションの種類を定義し、アプリケーションの作成時にアプリケーション名とデプロイのパラメーターを指定します。You define the application types in the application manifests, and you specify the application name and deployment parameters when you create the application.

このモデルは柔軟性がありますが、種類がマニフェスト ファイルから暗黙的に指定されるより単純なインスタンス ベースのデプロイ モデルもサポートする予定です。Although this model offers flexibility, we are also planning to support a simpler, instance-based deployment model where types are implicit from the manifest file. このモデルでは、各アプリケーションが独自の独立したマニフェストを取得します。In this model, each application gets its own independent manifest. インスタンス ベースのデプロイ形式である docker-compose.yml のサポートを追加することで、この取り組みをプレビューしています。We are previewing this effort by adding support for docker-compose.yml, which is an instance-based deployment format.

次のステップNext steps