Montare un volume emptyDir in Istanze di Azure Container

Informazioni su come montare un volume emptyDir per condividere dati tra i contenitori in un gruppo di contenitori in Istanze di Azure Container. Usare volumi emptyDir come cache temporanee per i carichi di lavoro in contenitori.

Nota

Il montaggio di un volume emptyDir è attualmente limitato ai contenitori di Linux. Mentre stiamo lavorando per portare tutte le funzionalità a Windows contenitori, è possibile trovare le differenze correnti della piattaforma nella panoramica.

Volume emptyDir

Il volume emptyDir fornisce una directory scrivibile accessibile per ogni contenitore in un gruppo di contenitori. I contenitori nel gruppo possono leggere e scrivere gli stessi file nel volume, che può essere montato usando lo stesso percorso o percorsi diversi in ogni contenitore.

Alcuni esempi d'uso per un volume emptyDir:

  • Area scratch
  • Checkpoint durante le attività a esecuzione prolungata
  • Archiviare i dati recuperati da un contenitore collaterale e fornito da un contenitore applicazione

I dati in un volume emptyDir vengono salvati in modo permanente tramite l'arresto anomalo del contenitore. Tuttavia per i contenitori che vengono riavviati non viene garantito il salvataggio in modo permanente dei dati in un volume emptyDir. Se si arresta un gruppo di contenitori, il volume emptyDir non viene salvato in modo permanente.

La dimensione massima di un volume Linux emptyDir è 50 GB.

Montare un volume emptyDir

Per montare un volume emptyDir in un'istanza del contenitore, è possibile eseguire la distribuzione usando un modello di Azure Resource Manager, un file YAML o altri metodi programmatici per distribuire un gruppo di contenitori.

Prima di tutto, popolare la volumes matrice nella sezione del gruppo properties di contenitori del file. Successivamente per ogni contenitore del gruppo di contenitori in cui si desidera montare il volume emptyDir, popolare la matrice volumeMounts nella sezione properties della definizione del contenitore.

Ad esempio, il modello di Resource Manager seguente crea un gruppo di contenitori costituito da due contenitori, ognuno dei quali monta il volume emptyDir:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "container1name": "aci-tutorial-app",
    "container1image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest",
    "container2name": "aci-tutorial-sidecar",
    "container2image": "mcr.microsoft.com/azuredocs/aci-tutorial-sidecar"
  },
  "resources": [
    {
      "type": "Microsoft.ContainerInstance/containerGroups",
      "apiVersion": "2021-03-01",
      "name": "volume-demo-emptydir",
      "location": "[resourceGroup().location]",
      "properties": {
        "containers": [
          {
            "name": "[variables('container1name')]",
            "properties": {
              "image": "[variables('container1image')]",
              "resources": {
                "requests": {
                  "cpu": 1,
                  "memoryInGb": 1.5
                }
              },
              "ports": [
                {
                  "port": 80
                }
              ],
              "volumeMounts": [
                {
                  "name": "emptydir1",
                  "mountPath": "/mnt/empty"
                }
              ]
            }
          },
          {
            "name": "[variables('container2name')]",
            "properties": {
              "image": "[variables('container2image')]",
              "resources": {
                "requests": {
                  "cpu": 1,
                  "memoryInGb": 1.5
                }
              },
              "volumeMounts": [
                {
                  "name": "emptydir1",
                  "mountPath": "/mnt/empty"
                }
              ]
            }
          }
        ],
        "osType": "Linux",
        "ipAddress": {
          "type": "Public",
          "ports": [
            {
              "protocol": "tcp",
              "port": "80"
            }
          ]
        },
        "volumes": [
          {
            "name": "emptydir1",
            "emptyDir": {}
          }
        ]
      }
    }
  ]
}

Per visualizzare esempi di distribuzione di gruppi di contenitori, vedere Distribuire un gruppo multi-contenitore usando un modello di Resource Manager e Distribuire un gruppo multi-contenitore usando un file YAML.

Passaggi successivi

Informazioni su come montare altri tipi di volume in Istanze di Azure Container: