Monter un volume emptyDir dans Azure Container Instances

Découvrez comment monter un volume emptyDir pour partager des données entre les conteneurs d’un groupe de conteneurs dans Azure Container Instances. Utilisez les volumes emptyDir comme caches éphémères pour vos charges de travail conteneurisées.

Notes

Le montage d’un volume emptyDir est actuellement limité aux conteneurs Linux. Nous travaillons actuellement à proposer toutes ces fonctionnalités dans des conteneurs Windows. En attendant, nous vous invitons à découvrir les différences actuelles de la plateforme dans la Vue d’ensemble.

Volume emptyDir

Le volume emptyDir fournit un répertoire accessible en écriture à chaque conteneur d’un groupe de conteneurs. Les conteneurs du groupe peuvent lire et écrire les mêmes fichiers dans le volume qui peut être monté en utilisant des chemins d’accès identiques ou différents dans chaque conteneur.

Exemples d’utilisation d’un volume emptyDir:

  • Espace scratch
  • Points de contrôle au cours de tâches longues
  • Stocker des données extraites par un conteneur sidecar et servies par un conteneur d’applications

Les données figurant dans un volume emptyDir sont conservées au fil des pannes de conteneur. Toutefois, il n’est pas garanti que les conteneurs redémarrés conservent les données figurant dans un volume emptyDir. Si vous arrêtez un groupe de conteneurs, le volume emptyDir n’est pas conservé.

La taille maximale d’un volume emptyDir Linux est de 50 Go.

Monter un volume emptyDir

Pour monter un volume emptyDir dans une instance de conteneur, vous pouvez effectuer le déploiement à l’aide d’un modèle Azure Resource Manager, d’un fichier YAML ou d’autres méthodes programmatique permettant de déployer un groupe de conteneurs.

Tout d’abord, remplissez le tableau volumes dans la section properties du groupe de conteneurs du fichier. Ensuite, pour chaque conteneur du groupe de conteneurs dans lequel vous souhaitez monter le volume emptyDir, remplissez le tableau volumeMounts dans la section properties de la définition de conteneur.

Par exemple, le modèle Resource Manager suivant crée un groupe de conteneurs consistant en deux conteneurs montant chacun le 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": {}
          }
        ]
      }
    }
  ]
}

Pour voir des exemples de déploiement d’un groupe de conteneurs, consultez Déployer un groupe multiconteneur avec un modèle Resource Manager et Déployer un groupe multiconteneur à l’aide d’un fichier YAML.

Étapes suivantes

Découvrez comment monter d’autres types de volumes dans Azure Container Instances :