Montați o partajare de fișiere Azure în instanțele de container Azure

Finalizat

În mod implicit, instanțele de container Azure sunt apatride. Dacă containerul se prăbușește sau se oprește, toată starea sa este pierdută. Pentru a persista starea dincolo de durata de viață a containerului, trebuie să montați un volum dintr-un magazin extern. După cum se arată în această unitate, instanțele Azure Container pot monta o partajare de fișiere Azure creată cu fișiere Azure. Azure Files oferă partajări de fișiere complet gestionate în cloud, care sunt accesibile prin protocolul standard Server Message Block (SMB). Utilizarea unei partajări de fișiere Azure cu instanțele de container Azure oferă caracteristici de partajare a fișierelor similare cu utilizarea unei partajări de fișiere Azure cu mașini virtuale Azure.

Limitări

  • Puteți monta partajări de fișiere Azure numai în containere Linux.
  • Montare volum partajare fișiere Azure necesită ca containerul Linux să ruleze ca root.
  • Suporturile de volum pentru partajarea fișierelor Azure sunt limitate la suportul CIFS.

Implementați volumul containerului și al montării

Pentru a monta o partajare de fișiere Azure ca volum într-un container utilizând CLI Azure, specificați punctul de partajare și de montare pe volum atunci când creați containerul cu az container create. Iată un exemplu al comenzii:

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/

Valoarea --dns-name-label trebuie să fie unică în regiunea Azure în care creați instanța containerului. Actualizați valoarea din comanda precedentă dacă primiți un mesaj de eroare etichetă nume DNS atunci când executați comanda.

Implementați volumul containerului și al montării - YAML

De asemenea, puteți implementa un grup de containere și puteți monta un volum într-un container cu CLI Azure și un șablon YAML. Implementarea prin șablonul YAML este metoda preferată atunci când implementați grupuri de containere constând din mai multe containere.

Următorul șablon YAML definește un grup de containere cu un container creat cu imaginea aci-hellofiles . Containerul montează fișierul Azure file share acishare creat anterior ca volum. Următorul este un exemplu de fișier 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

Montați mai multe volume

Pentru a monta mai multe volume într-o instanță de container, trebuie să implementați utilizând un șablon Azure Resource Manager sau un fișier YAML. Pentru a utiliza un șablon sau un fișier YAML, furnizați detaliile de partajare și definiți volumele populând matricea volumes în properties secțiunea șablonului.

De exemplu, dacă ați creat două partajări de fișiere Azure denumite share1 și share2 în contul de stocare myStorageAccount, matricea volumes dintr-un șablon Manager de resurse ar apărea similar cu următoarea:

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

Apoi, pentru fiecare container din grupul de containere în care doriți să montați volumele, populați matricea volumeMounts în properties secțiunea definiției containerului. De exemplu, aceasta montează cele două volume, myvolume1 și myvolume2, definite anterior:

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