Montera en Azure-filresurs i Azure Container Instances

Slutförd

Som standard är Azure Container Instances tillståndslösa. Om containern kraschar eller stoppas förloras hela tillståndet. Om du vill bevara tillståndet längre än containerns livslängd måste du montera en volym från en extern lagring. Som du ser i den här lektionen kan Azure Container Instances montera en Azure-filresurs som skapats med Azure Files. Azure Files erbjuder fullständigt hanterade filresurser i molnet som är tillgängliga via Server Message Block-protokollet (SMB), som är branschstandard. Om du använder en Azure-filresurs med Azure Container Instances får du fildelningsfunktioner som liknar hur du använder en Azure-filresurs med virtuella Azure-datorer.

Begränsningar

  • Du kan bara montera Azure Files-resurser i Linux-containrar.
  • Azure-filresursens volymmontering kräver att Linux-containern körs som rot.
  • Volymmonteringar för Azure-filresurser är begränsade till CIFS-stöd.

Distribuera containern och montera volymen

Om du vill montera en Azure-filresurs som en volym i en container med hjälp av Azure CLI anger du resurs- och volymmonteringspunkten när du skapar containern med az container create. Följande är ett exempel på kommandot:

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/

Värdet --dns-name-label måste vara unikt i Den Azure-region där du skapar containerinstansen. Uppdatera värdet i föregående kommando om du får felmeddelandet DNS-namnetikett när du kör kommandot.

Distribuera container och montera volym – YAML

Du kan också distribuera en containergrupp och montera en volym i en container med Azure CLI och en YAML-mall. Att distribuera med YAML-mall är den bästa metoden när du distribuerar containergrupper som består av flera containrar.

Följande YAML-mall definierar en containergrupp med en container som skapats med avbildningen aci-hellofiles . Containern monterar Azure-filresursen acishare som skapades tidigare som en volym. Följande är en YAML-exempelfil.

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

Montera flera volymer

Om du vill montera flera volymer i en containerinstans måste du distribuera med hjälp av en Azure Resource Manager-mall eller en YAML-fil. Om du vill använda en mall eller YAML-fil anger du resursinformationen och definierar volymerna genom att fylla i matrisen volumes properties i avsnittet i mallen.

Om du till exempel har skapat två Azure Files-resurser med namnet share1 och share2 i lagringskontot myStorageAccount ser matrisen volumes i en Resource Manager-mall ut ungefär så här:

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

För varje container i containergruppen där du vill montera volymerna fyller du sedan i matrisen volumeMounts properties i avsnittet i containerdefinitionen. Detta monterar till exempel de två volymerna, myvolume1 och myvolume2, som tidigare definierats:

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