Monter un partage de fichiers Azure dans Azure Container Instances
Par défaut, les conteneurs Azure Container Instances sont sans état. Si le conteneur se bloque ou s’arrête, son état est entièrement perdu. Pour conserver l’état au-delà de la durée de vie du conteneur, vous devez monter un volume à partir d’un magasin externe. Comme indiqué dans cette unité, Azure Container Instances peut monter un partage de fichiers Azure créé avec Azure Files. Azure Files offre des partages de fichiers complètement managés dans le cloud, accessibles via le protocole SMB (Server Message Block) standard. 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.
Limites
- Vous pouvez uniquement monter des partages Azure Files sur des conteneurs Linux.
- Le montage de volume de partage de fichiers Azure requiert l’exécution du conteneur Linux en tant que racine.
- Les montages de volumes de partage de fichiers Azure sont limités à la prise en charge de CIFS.
Déployer le conteneur et monter le volume
Pour monter un partage de fichiers Azure comme volume dans un conteneur à l’aide d’Azure CLI, spécifiez le point de montage du partage et du volume quand vous créez le conteneur avec az container create
. Voici un exemple de la commande :
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. 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.
Déployer le conteneur et monter le volume - YAML
Vous pouvez également déployer un groupe de conteneurs et monter un volume dans un conteneur avec l’interface Azure CLI et un modèle YAML. Le déploiement avec un modèle YAML est la méthode privilégiée lorsqu’il s’agit de déployer des groupes de conteneurs, composés de conteneurs multiples.
Le modèle YAML suivant définit un groupe de conteneurs avec un seul conteneur créé avec l’image aci-hellofiles
. Le conteneur monte le partage de fichiers Azure acishare créé précédemment en tant que volume. Voici un exemple de fichier YAML.
apiVersion: '2019-12-01'
location: eastus
name: file-share-demo
properties:
containers:
- name: hellofiles
properties:
environmentVariables: []
image: mcr.microsoft.com/azuredocs/aci-hellofiles
ports:
- port: 80
resources:
requests:
cpu: 1.0
memoryInGB: 1.5
volumeMounts:
- mountPath: /aci/logs/
name: filesharevolume
osType: Linux
restartPolicy: Always
ipAddress:
type: Public
ports:
- port: 80
dnsNameLabel: aci-demo
volumes:
- name: filesharevolume
azureFile:
sharename: acishare
storageAccountName: <Storage account name>
storageAccountKey: <Storage account key>
tags: {}
type: Microsoft.ContainerInstance/containerGroups
Monter plusieurs 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. Pour utiliser un modèle ou fichier YAML, fournissez les détails de partage et définissez les volumes en remplissant le tableau volumes
dans la section properties
du modèle.
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
dans un modèle Resource Manager ressemblerait à ceci :
"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. Ainsi, nous obtenons les deux volumes montés, myvolume1 et myvolume2, définis précédemment :
"volumeMounts": [{
"name": "myvolume1",
"mountPath": "/mnt/share1/"
},
{
"name": "myvolume2",
"mountPath": "/mnt/share2/"
}]