Usare il plug-in di volume e driver di registrazione Docker per il contenitoreUse Docker volume plug-ins and logging drivers in your container

Azure Service Fabric supporta la specifica di plug-in di volume Docker e i driver di registrazione Docker per il servizio di contenitore.Azure Service Fabric supports specifying Docker volume plug-ins and Docker logging drivers for your container service. È possibile rendere persistenti i dati in File di Azure quando il contenitore viene spostato o riavviato in un host diverso.You can persist your data in Azure Files when your container is moved or restarted on a different host.

Attualmente sono supportati solo driver di volume per contenitori Linux.Only volume drivers for Linux containers are currently supported. Se si usano contenitori di Windows, è possibile mappare un volume a una condivisione SMB3 File di Azure senza un driver di volume.If you're using Windows containers, you can map a volume to an Azure Files SMB3 share without a volume driver. Per questo mapping è necessario aggiornare le macchine virtuali nel cluster alla versione 1709 di Windows Server.For this mapping, update your virtual machines (VMs) in your cluster to the latest Windows Server 1709 version.

Installare i driver di volume/registrazione DockerInstall the Docker volume/logging driver

Il driver di volume/registrazione Docker non è installato nel computer, è possibile installarlo manualmente usando i protocolli RDP/SSH.If the Docker volume/logging driver is not installed on the machine, you can install it manually by using the RDP/SSH protocols. È possibile eseguire l'installazione con questi protocolli tramite un script di avvio del set di scalabilità di macchine virtuali o uno script SetupEntryPoint.You can perform the install with these protocols through a virtual machine scale set start-up script or an SetupEntryPoint script.

Un esempio di script per installare il driver di volume Docker per Azure è riportato di seguito:An example of the script to install the Docker volume driver for Azure is as follows:

docker plugin install --alias azure --grant-all-permissions docker4x/cloudstor:17.09.0-ce-azure1  \
    CLOUD_PLATFORM=AZURE \
    AZURE_STORAGE_ACCOUNT="[MY-STORAGE-ACCOUNT-NAME]" \
    AZURE_STORAGE_ACCOUNT_KEY="[MY-STORAGE-ACCOUNT-KEY]" \
    DEBUG=1

Specificare il plug-in o il driver nel manifestoSpecify the plug-in or driver in the manifest

I plug-in sono specificati nel manifesto dell'applicazione, come illustrato di seguito:The plug-ins are specified in the application manifest as follows:

?xml version="1.0" encoding="UTF-8"?>
<ApplicationManifest ApplicationTypeName="WinNodeJsApp" ApplicationTypeVersion="1.0" xmlns="http://schemas.microsoft.com/2011/01/fabric" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Description>Calculator Application</Description>
    <Parameters>
        <Parameter Name="ServiceInstanceCount" DefaultValue="3"></Parameter>
      <Parameter Name="MyCpuShares" DefaultValue="3"></Parameter>
    </Parameters>
    <ServiceManifestImport>
        <ServiceManifestRef ServiceManifestName="NodeServicePackage" ServiceManifestVersion="1.0"/>
     <Policies>
       <ContainerHostPolicies CodePackageRef="NodeService.Code" Isolation="hyperv"> 
        <PortBinding ContainerPort="8905" EndpointRef="Endpoint1"/>
        <RepositoryCredentials PasswordEncrypted="false" Password="****" AccountName="test"/>
        <LogConfig Driver="etwlogs" >
          <DriverOption Name="test" Value="vale"/>
        </LogConfig>
        <Volume Source="c:\workspace" Destination="c:\testmountlocation1" IsReadOnly="false"></Volume>
        <Volume Source="d:\myfolder" Destination="c:\testmountlocation2" IsReadOnly="true"> </Volume>
        <Volume Source="myvolume1" Destination="c:\testmountlocation2" Driver="azure" IsReadOnly="true">
           <DriverOption Name="share" Value="models"/>
        </Volume>
       </ContainerHostPolicies>
   </Policies>
    </ServiceManifestImport>
    <ServiceTemplates>
        <StatelessService ServiceTypeName="StatelessNodeService" InstanceCount="5">
            <SingletonPartition></SingletonPartition>
        </StatelessService>
    </ServiceTemplates>
</ApplicationManifest>

Il tag Source per l'elemento Volume fa riferimento alla cartella di origine.The Source tag for the Volume element refers to the source folder. La cartella di origine può essere una cartella nella macchina virtuale che ospita i contenitori o un archivio remoto persistente.The source folder can be a folder in the VM that hosts the containers or a persistent remote store. Il tag Destination è il percorso in cui viene eseguito il mapping di Source all'interno del contenitore in esecuzione.The Destination tag is the location that the Source is mapped to within the running container. La destinazione non può quindi essere un percorso già esistente all'interno del contenitore.Thus, your destination can't be a location that already exists within your container.

Quando si specifica un plug-in di volume, Service Fabric crea automaticamente il volume usando i parametri specificati.When specifying a volume plug-in, Service Fabric automatically creates the volume by using the specified parameters. Il tag Source è il nome del volume e il tag Driver specifica il plug-in del driver del volume.The Source tag is the name of the volume and the Driver tag specifies the volume driver plug-in. Le opzioni possono essere specificate tramite il tag DriverOption come indicato di seguito:Options can be specified by using the DriverOption tag as follows:

<Volume Source="myvolume1" Destination="c:\testmountlocation4" Driver="azure" IsReadOnly="true">
           <DriverOption Name="share" Value="models"/>
</Volume>

Se viene specificato un driver di log Docker, è necessario distribuire gli agenti o i contenitori per gestire i registri nel cluster.If a Docker log driver is specified, you have to deploy agents (or containers) to handle the logs in the cluster. Il tag DriverOption può essere usato per specificare le opzioni per il driver di log.The DriverOption tag can be used to specify options for the log driver.

Passaggi successiviNext steps

Per distribuire i contenitori in un cluster di Service Fabric, vedere Creare la prima applicazione contenitore di Service Fabric in Windows.To deploy containers to a Service Fabric cluster, see Deploy a container on Service Fabric.