Einbinden eines emptyDir-Volumes in Azure Container Instances

Hier erfahren Sie, wie Sie ein emptyDir-Volume einbinden, um Daten zwischen den Containern in einer Containergruppe in Azure Container Instances freizugeben. Verwenden Sie emptyDir--Volumes als kurzlebige Caches für Ihre containerisierten Workloads.

Hinweis

Zurzeit ist das Einbinden eines emptyDir-Volumes auf Linux-Container beschränkt. Bis alle Features auch für Windows-Container verfügbar sind, finden Sie die aktuellen Plattformunterschiede in der Übersicht.

emptyDir-Volume

Das emptyDir-Volume bietet ein Verzeichnis, in das geschrieben und auf das von jedem Container in einer Containergruppe zugegriffen werden kann. Container in der Gruppe können die gleichen Dateien im Volume lesen und schreiben, und das Volume kann mit den gleichen oder unterschiedlichen Pfaden in jedem Container eingebunden werden.

Beispiele für die Verwendung eines emptyDir-Volumes:

  • Temporärer Speicherbereich
  • Setzen von Prüfpunkten bei Tasks mit langer Ausführungsdauer
  • Speicherdaten, die von einem Sidecar-Container abgerufen und von einem Anwendungscontainer bereitgestellt werden

Daten in einem emptyDir-Volume bleiben bei Containerabstürzen gespeichert. Bei neu gestarteten Container kann jedoch nicht garantiert werden, dass die Daten in einem emptyDir-Volume beibehalten werden. Wenn Sie eine Containergruppe anhalten, wird das emptyDir-Volume nicht persistent gespeichert.

Die maximale Größe eines emptyDir-Volumes unter Linux beträgt 50 GB.

Einbinden eines emptyDir-Volumes

Sie können ein emptyDir-Volume in eine Containerinstanz einbinden, indem Sie eine Azure Resource Manager-Vorlage, eine YAML-Datei oder andere programmgesteuerte Methoden zum Bereitstellen einer Containergruppe verwenden.

Füllen Sie in der Datei zunächst das volumes-Array im Abschnitt properties für die Containergruppe auf. Füllen Sie als Nächstes für jeden Container in der Containergruppe, in die Sie das emptyDir-Volume einbinden möchten, das Array volumeMounts im Abschnitt properties der Containerdefinition auf.

Mit der folgenden Resource Manager-Vorlage wird beispielsweise eine Containergruppe mit zwei Containern erstellt, die jeweils das emptyDir-Volume einbinden:

{
  "$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": {}
          }
        ]
      }
    }
  ]
}

Beispiele für die Bereitstellung von Containergruppen finden Sie unter Bereitstellen einer Gruppe mit mehreren Containern über eine Resource Manager-Vorlage und Bereitstellen einer Gruppe mit mehreren Containern mithilfe einer YAML-Datei.

Nächste Schritte

Erfahren Sie, wie andere Volumetypen in Azure Container Instances bereitgestellt werden: