Supporto della distribuzione Docker Compose in Azure Service Fabric (anteprima)Docker Compose deployment support in Azure Service Fabric (Preview)

Docker usa il file docker-compose.yml per la definizione di applicazioni multi-contenitore.Docker uses the docker-compose.yml file for defining multi-container applications. Per consentire ai clienti che hanno familiarità con Docker di orchestrare facilmente le applicazioni contenitore presenti in Azure Service Fabric, nella piattaforma è stato incluso il supporto nativo per la distribuzione Docker Compose, disponibile in anteprima.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 può accettare la versione 3 (o successiva) dei file docker-compose.yml.Service Fabric can accept version 3 and later of docker-compose.yml files.

Poiché questo supporto è disponibile in anteprima, è supportato solo un subset delle direttive Compose.Because this support is in preview, only a subset of Compose directives is supported. Non sono supportati, ad esempio, gli aggiornamenti dell'applicazione.For example, application upgrades are not supported. Tuttavia, è sempre possibile rimuovere e distribuire le applicazioni invece di aggiornarle.However, you can always remove and deploy applications instead of upgrading them.

Per usare questa versione di anteprima, creare il cluster con la versione 5.7 o versione successiva del runtime di Service Fabric tramite il portale di Azure con l'SDK corrispondente.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.

Nota

Questa funzionalità è in versione di anteprima e non è supportata in produzione.This feature is in preview and is not supported in production. Gli esempi seguenti sono basati sulla versione runtime 6.0 e la versione 2.8 dell'SDK.The examples below are based on runtime version 6.0 and SDK version 2.8.

Distribuire un file Docker Compose in Service FabricDeploy a Docker Compose file on Service Fabric

I comandi seguenti creano un'applicazione di Service Fabric, denominata fabric:/TestContainerApp, che è possibile monitorare e gestire analogamente a qualsiasi altra applicazione di 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. Per eseguire query sull'integrità, è possibile usare il nome dell'applicazione specificato.You can use the specified application name for health queries. Service Fabric riconosce "DeploymentName" come identificatore della distribuzione Compose.Service Fabric recognizes "DeploymentName" as the identifier of the Compose deployment.

Usare PowerShellUse PowerShell

Creare una distribuzione Compose di Service Fabric da un file docker-compose.yml eseguendo il comando seguente in PowerShell: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 e RegistryPassword fanno riferimento al nome utente e alla password del registro contenitori.RegistryUserName and RegistryPassword refer to the container registry username and password. Dopo aver completato la distribuzione, è possibile controllarne lo stato usando il comando seguente:After you've completed the deployment, you can check its status by using the following command:

Get-ServiceFabricComposeDeploymentStatus -DeploymentName TestContainerApp

Per eliminare la distribuzione Compose tramite PowerShell, usare il comando seguente:To delete the Compose deployment through PowerShell, use the following command:

Remove-ServiceFabricComposeDeployment  -DeploymentName TestContainerApp

Per avviare un aggiornamento della distribuzione Compose tramite PowerShell, usare il comando seguente:To start a Compose deployment upgrade through PowerShell, use the following command:

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

Dopo l'accettazione dell'aggiornamento, è possibile tenere traccia del relativo stato di avanzamento con il comando seguente:After upgrade is accepted, the upgrade progress could be tracked using the following command:

Get-ServiceFabricComposeDeploymentUpgrade -Deployment TestContainerApp

Usare l'interfaccia della riga di comando di Azure Service Fabric (sfctl)Use Azure Service Fabric CLI (sfctl)

In alternativa, è possibile usare il comando dell'interfaccia della riga di comando di Service Fabric seguente: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 ]

Dopo aver creato la distribuzione, è possibile controllarne lo stato con il comando seguente:After you've created the deployment, you can check its status by using the following command:

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

Per eliminare la distribuzione Compose, usare il comando seguente:To delete the compose deployment, use the following command:

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

Per avviare un aggiornamento della distribuzione Compose, usare il comando seguente: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 ]

Dopo l'accettazione dell'aggiornamento, è possibile tenere traccia del relativo stato di avanzamento con il comando seguente:After upgrade is accepted, the upgrade progress could be tracked using the following command:

sfctl compose upgrade-status --deployment-name TestContainerApp

Direttive Compose supportateSupported Compose directives

Questa versione di anteprima supporta un subset delle opzioni di configurazione a partire dal formato Compose versione 3, incluse le primitive seguenti:This preview supports a subset of the configuration options from the Compose version 3 format, including the following primitives:

  • Services > Deploy > ReplicasServices > Deploy > Replicas
  • Services > Deploy > Placement > ConstraintsServices > Deploy > Placement > Constraints
  • Services > Deploy > Resources > LimitsServices > Deploy > Resources > Limits
    • -cpu-shares-cpu-shares
    • -memory-memory
    • -memory-swap-memory-swap
  • Services > CommandsServices > Commands
  • Services > EnvironmentServices > Environment
  • Services > PortsServices > Ports
  • Services > ImageServices > Image
  • Services > Isolation (solo per Windows)Services > Isolation (only for Windows)
  • Services > Logging > DriverServices > Logging > Driver
  • Services > Logging > Driver > OptionsServices > Logging > Driver > Options
  • Volume & Deploy > VolumeVolume & Deploy > Volume

Configurare il cluster in modo da applicare i limiti delle risorse, come descritto in Governance delle risorse di Service Fabric.Set up the cluster for enforcing resource limits, as described in Service Fabric resource governance. Tutte le altre direttive Docker Compose non sono supportate per questa versione di anteprima.All other Docker Compose directives are unsupported for this preview.

Calcolo di ServiceDnsNameServiceDnsName computation

Se il nome del servizio specificato nel file Compose è un nome di dominio completo (ovvero contiene un punto [.]), il nome DNS registrato da Service Fabric è <ServiceName>, incluso il punto.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). In caso contrario, ogni segmento di percorso nel nome dell'applicazione diventa un'etichetta di dominio nel nome DNS del servizio, con il primo segmento di percorso che diventa l'etichetta di dominio di primo livello.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.

Se, ad esempio, il nome specificato per l'applicazione è fabric:/SampleApp/MyComposeApp, il nome DNS registrato sarà <ServiceName>.MyComposeApp.SampleApp.For example, if the specified application name is fabric:/SampleApp/MyComposeApp, <ServiceName>.MyComposeApp.SampleApp would be the registered DNS name.

Distribuzione Compose (definizione di istanza) e modello di app di Service Fabric (definizione di tipo)Compose deployment (instance definition) versus Service Fabric app model (type definition)

Un file docker-compose.yml descrive un set distribuibile di contenitori, incluse le relative proprietà e configurazioni.A docker-compose.yml file describes a deployable set of containers, including their properties and configurations. Il file può contenere, ad esempio, variabili di ambiente e porte.For example, the file can contain environment variables and ports. Nel file docker-compose.yml è possibile specificare anche i parametri di distribuzione, ad esempio i vincoli di posizionamento, i limiti delle risorse e i nomi DNS.You can also specify deployment parameters, such as placement constraints, resource limits, and DNS names, in the docker-compose.yml file.

Il modello di applicazione di Service Fabric usa tipi di servizio e tipi di applicazione, in cui possono coesistere numerose istanze dell'applicazione dello stesso tipo.The Service Fabric application model uses service types and application types, where you can have many application instances of the same type. È possibile, ad esempio, che sia presente un'istanza dell'applicazione per ogni cliente.For example, you can have one application instance per customer. Questo modello basato sul tipo supporta più versioni dello stesso tipo di applicazione registrato con il runtime.This type-based model supports multiple versions of the same application type that's registered with the runtime.

Il cliente A, ad esempio, può avere un'applicazione di cui è stata creata un'istanza con il tipo 1.0 di AppTypeA e il cliente B può avere un'altra applicazione di cui è stata creata un'istanza con lo stesso tipo e la stessa versione.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. I tipi di applicazione vengono definiti nei manifesti dell'applicazione e il nome dell'applicazione e i parametri di distribuzione vengono specificati al momento della creazione dell'applicazione.You define the application types in the application manifests, and you specify the application name and deployment parameters when you create the application.

Questo modello offre flessibilità, ma è previsto anche il supporto di un modello di distribuzione basato su istanze più semplice, in cui i tipi sono impliciti nel file manifesto.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 questo modello, ogni applicazione ottiene il proprio manifesto indipendente.In this model, each application gets its own independent manifest. Questa funzionalità viene offerta in anteprima aggiungendo il supporto per docker-compose.yml, che è un formato di distribuzione basato su istanze.We are previewing this effort by adding support for docker-compose.yml, which is an instance-based deployment format.

Passaggi successiviNext steps