Monter un partage de fichiers Azure dans Azure Container InstancesMount an Azure file share in Azure Container Instances

Par défaut, les conteneurs Azure Container Instances sont sans état.By default, Azure Container Instances are stateless. Si le conteneur se bloque ou s’arrête, son état est entièrement perdu.If the container crashes or stops, all of its state is lost. Pour conserver l’état au-delà de la durée de vie du conteneur, vous devez monter un volume à partir d’un stockage externe.To persist state beyond the lifetime of the container, you must mount a volume from an external store. Cet article explique comment monter un partage de fichiers Azure créé avec Azure Files pour une utilisation avec Azure Container Instances.This article shows how to mount an Azure file share created with Azure Files for use with Azure Container Instances. Azure Files offre des partages de fichiers managés dans le cloud qui sont accessibles via le protocole SMB (Server Message Block) standard.Azure Files offers fully managed file shares in the cloud that are accessible via the industry standard Server Message Block (SMB) protocol. L'utilisation d'un partage de fichiers Azure avec Azure Container Instances offre des fonctionnalités de partage de fichiers similaires à l’utilisation d’un partage de fichiers Azure avec machines virtuelles Azure.Using an Azure file share with Azure Container Instances provides file-sharing features similar to using an Azure file share with Azure virtual machines.

Notes

Le montage d’un partage de fichiers Azure est actuellement limité aux conteneurs Linux.Mounting an Azure Files share is currently restricted to Linux containers. Nous travaillons actuellement à proposer toutes ces fonctionnalités dans des conteneurs Windows. En attendant, nous vous invitons à découvrir les différences actuelles de la plateforme dans Disponibilité des régions et quotas pour Azure Container Instances.While we are working to bring all features to Windows containers, you can find current platform differences in Quotas and region availability for Azure Container Instances.

Crée un partage de fichiers AzureCreate an Azure file share

Avant d’utiliser un partage de fichiers Azure avec Azure Container Instances, vous devez le créer.Before using an Azure file share with Azure Container Instances, you must create it. Exécutez le script suivant pour créer un compte de stockage et y héberger le partage de fichiers, et le partage proprement dit.Run the following script to create a storage account to host the file share, and the share itself. Comme le nom du compte de stockage doit être globalement unique, le script ajoute une valeur aléatoire à la chaîne de base.The storage account name must be globally unique, so the script adds a random value to the base string.

# Change these four parameters as needed
ACI_PERS_RESOURCE_GROUP=myResourceGroup
ACI_PERS_STORAGE_ACCOUNT_NAME=mystorageaccount$RANDOM
ACI_PERS_LOCATION=eastus
ACI_PERS_SHARE_NAME=acishare

# Create the storage account with the parameters
az storage account create \
    --resource-group $ACI_PERS_RESOURCE_GROUP \
    --name $ACI_PERS_STORAGE_ACCOUNT_NAME \
    --location $ACI_PERS_LOCATION \
    --sku Standard_LRS

# Create the file share
az storage share create --name $ACI_PERS_SHARE_NAME --account-name $ACI_PERS_STORAGE_ACCOUNT_NAME

Obtenir des informations d’identification de stockageGet storage credentials

Pour monter un partage de fichiers Azure en tant que volume dans Azure Container Instances, vous avez besoin de trois valeurs : le nom du compte de stockage, le nom du partage et la clé d’accès de stockage.To mount an Azure file share as a volume in Azure Container Instances, you need three values: the storage account name, the share name, and the storage access key.

Si vous avez utilisé le script ci-dessus, le nom du compte de stockage a été stocké dans la variable $ACI_PERS_STORAGE_ACCOUNT_NAME.If you used the script above, the storage account name was stored in the $ACI_PERS_STORAGE_ACCOUNT_NAME variable. Pour afficher le nom du compte, entrez :To see the account name, type:

echo $ACI_PERS_STORAGE_ACCOUNT_NAME

Le nom du partage étant déjà connu (c’est-à-dire acishare dans le script ci-dessus), il ne reste que la clé du compte de stockage, qui peut être trouvée à l’aide de la commande suivante :The share name is already known (defined as acishare in the script above), so all that remains is the storage account key, which can be found using the following command:

STORAGE_KEY=$(az storage account keys list --resource-group $ACI_PERS_RESOURCE_GROUP --account-name $ACI_PERS_STORAGE_ACCOUNT_NAME --query "[0].value" --output tsv)
echo $STORAGE_KEY

Déployer le conteneur et monter le volumeDeploy container and mount volume

Pour monter un partage de fichiers Azure en tant que volume dans un conteneur, spécifiez le point de montage du volume et le partage lorsque vous créez le conteneur avec az container create.To mount an Azure file share as a volume in a container, specify the share and volume mount point when you create the container with az container create. Si vous avez accompli les étapes précédentes, vous pouvez monter le partage que vous avez créé avant à l’aide de la commande suivante pour créer un conteneur :If you've followed the previous steps, you can mount the share you created earlier by using the following command to create a container:

az container create \
    --resource-group $ACI_PERS_RESOURCE_GROUP \
    --name hellofiles \
    --image mcr.microsoft.com/azuredocs/aci-hellofiles \
    --dns-name-label aci-demo \
    --ports 80 \
    --azure-file-volume-account-name $ACI_PERS_STORAGE_ACCOUNT_NAME \
    --azure-file-volume-account-key $STORAGE_KEY \
    --azure-file-volume-share-name $ACI_PERS_SHARE_NAME \
    --azure-file-volume-mount-path /aci/logs/

La valeur --dns-name-label doit être unique au sein de la région Azure dans laquelle vous créez l’instance de conteneur.The --dns-name-label value must be unique within the Azure region you create the container instance. Mettez à jour la valeur de la commande précédente si vous recevez un message d’erreur Étiquette de nom DNS lorsque vous exécutez la commande.Update the value in the preceding command if you receive a DNS name label error message when you execute the command.

Gérer les fichiers dans le volume montéManage files in mounted volume

Une fois que le démarrage du conteneur, vous pouvez utiliser l’application web simple déployée via Microsoft aci-hellofiles aci-hellofiles image pour créer des petits fichiers texte dans le partage de fichiers Azure sur le chemin de montage que vous avez spécifié.Once the container starts up, you can use the simple web app deployed via the Microsoft aci-hellofiles image to create small text files in the Azure file share at the mount path you specified. Obtenir un nom de domaine complet de l’application web (FQDN) avec la commande [afficher de conteneur az] az-container-show :Obtain the web app's fully qualified domain name (FQDN) with the az container show command:

az container show --resource-group $ACI_PERS_RESOURCE_GROUP --name hellofiles --query ipAddress.fqdn

Vous pouvez utiliser le portail Azure ou un outil comme l’Explorateur Stockage Microsoft Azure pour récupérer et inspecter le fichier écrit sur le partage de fichiers.You can use the Azure portal or a tool like the Microsoft Azure Storage Explorer to retrieve and inspect the file written to the file share.

Monter plusieurs volumesMount multiple volumes

Pour monter plusieurs volumes dans une instance de conteneur, vous devez effectuer le déploiement à l’aide d’un modèle Azure Resource Manager ou d'un fichier YAML.To mount multiple volumes in a container instance, you must deploy using an Azure Resource Manager template or a YAML file.

Pour utiliser un modèle, fournissez les détails de partage et définissez les volumes en remplissant le tableau volumes dans la section properties du modèle.To use a template, provide the share details and define the volumes by populating the volumes array in the properties section of the template. Par exemple, si vous avez créé deux partages de fichiers Azure nommés share1 et share2 dans le compte de stockage myStorageAccount, le tableau volumes ressemblerait à ceci :For example, if you've created two Azure Files shares named share1 and share2 in storage account myStorageAccount, the volumes array would appear similar to the following:

"volumes": [{
  "name": "myvolume1",
  "azureFile": {
    "shareName": "share1",
    "storageAccountName": "myStorageAccount",
    "storageAccountKey": "<storage-account-key>"
  }
},
{
  "name": "myvolume2",
  "azureFile": {
    "shareName": "share2",
    "storageAccountName": "myStorageAccount",
    "storageAccountKey": "<storage-account-key>"
  }
}]

Ensuite, pour chaque conteneur du groupe de conteneurs dans lequel vous souhaitez monter les volumes, remplissez le tableau volumeMounts dans la section properties de la définition de conteneur.Next, for each container in the container group in which you'd like to mount the volumes, populate the volumeMounts array in the properties section of the container definition. Ainsi, nous obtenons les deux volumes montés, myvolume1 et myvolume2, définis précédemment :For example, this mounts the two volumes, myvolume1 and myvolume2, previously defined:

"volumeMounts": [{
  "name": "myvolume1",
  "mountPath": "/mnt/share1/"
},
{
  "name": "myvolume2",
  "mountPath": "/mnt/share2/"
}]

Pour voir un exemple de déploiement d’instance de conteneur avec un modèle Azure Resource Manager, consultez Déployer un groupe de conteneurs.To see an example of container instance deployment with an Azure Resource Manager template, see Deploy a container group. Pour un exemple utilisant un fichier YAML, consultez Déployer un groupe de plusieurs conteneurs avec YAMLFor an example using a YAML file, see Deploy a multi-container group with YAML

Étapes suivantesNext steps

Découvrez comment monter d’autres types de volumes dans Azure Container Instances :Learn how to mount other volume types in Azure Container Instances: