Montaje de un volumen de emptyDir en Azure Container Instances

Aprenda a montar un volumen emptyDir para compartir datos entre los contenedores de un grupo de contenedores en Azure Container Instances. Use los volúmenes emptyDir como memorias caché efímeras para las cargas de trabajo en contenedores.

Nota:

El montaje de un volumen emptyDir está actualmente restringido a los contenedores de Linux. Aunque se está trabajando para incorporar todas las características a los contenedores Windows, puede consultar las diferencias actuales entre plataformas en la introducción.

Volumen emptyDir

El volumen emptyDir ofrece un directorio de escritura accesible para cada contenedor de un grupo de contenedores. Los contenedores del grupo pueden leer y escribir los mismos archivos en el volumen, que puede montarse mediante las mismas o distintas rutas de acceso en cada contenedor.

Algunos ejemplos de uso de un volumen emptyDir:

  • Espacio de desecho
  • Punto de control durante las tareas de ejecución prolongada
  • Almacenamiento de datos recuperados por un contenedor sidecar y atendidos por un contenedor de aplicación

Los datos incluidos en un volumen emptyDir se conservan a través de bloqueos de contenedor. Pero no se garantiza que se conserven los datos de un volumen emptyDir en los contenedores que se reinicien. Si detiene un grupo de contenedores, el volumen emptyDir no se conserva.

El tamaño máximo de un volumen emptyDir de Linux es de 50 GB.

Montaje de un volumen emptyDir

Para montar un volumen emptyDir en una instancia de contenedor, debe realizar la implementación con una plantilla de Azure Resource Manager, un archivo YAML u otro método de programación para implementar un grupo de contenedores.

En primer lugar, rellene la matriz volumes en la sección properties del grupo de contenedores del archivo. Luego, para cada contenedor del grupo de contenedores en el que quiera montar el volumen emptyDir, rellene la matriz volumeMounts en la sección properties de la definición del contenedor.

Por ejemplo, la siguiente plantilla de Resource Manager crea un grupo de contenedores que consta de dos contenedores y en cada uno de ellos se monta el volumen 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": {}
          }
        ]
      }
    }
  ]
}

Para ver ejemplos de la implementación del grupo de contenedores, consulte Implementación de un grupo con varios contenedores con una plantilla Resource Manager e Implementación de un grupo de varios contenedores con un archivo YAML.

Pasos siguientes

Aprenda a montar otros tipos de volúmenes en Azure Container Instances: