Ejercicio: uso de volúmenes de datos
De forma predeterminada, Azure Container Instances no tiene estado. Si el contenedor se bloquea o se detiene, se pierde todo su estado. Para conservar el estado más allá de la vigencia del contenedor, debe montar un volumen desde un almacén externo.
Monte un recurso compartido de archivos de Azure en una instancia de contenedor de Azure para poder almacenar datos y acceder a ellos más adelante.
Creación de un recurso compartido de archivos de Azure
Cree una cuenta de almacenamiento y un recurso compartido de archivos. Posteriormente, se puede hacer que una instancia de contenedor de Azure acceda a este recurso.
La cuenta de almacenamiento necesita un nombre único. Con fines de aprendizaje, ejecute este comando para almacenar un nombre único en una variable de Bash:
STORAGE_ACCOUNT_NAME=mystorageaccount$RANDOM
Ejecute el siguiente comando
az storage account create
para crear la cuenta de almacenamiento:az storage account create \ --resource-group learn-deploy-aci-rg \ --name $STORAGE_ACCOUNT_NAME \ --sku Standard_LRS \ --location eastus
Ejecute el siguiente comando para colocar la cadena de conexión de la cuenta de almacenamiento en una variable de entorno denominada
AZURE_STORAGE_CONNECTION_STRING
:export AZURE_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string \ --resource-group learn-deploy-aci-rg \ --name $STORAGE_ACCOUNT_NAME \ --output tsv)
AZURE_STORAGE_CONNECTION_STRING
es una variable de entorno especial que la CLI de Azure comprende. El elementoexport
permite que otros comandos CLI que se ejecutan después accedan a la variable.Ejecute este comando para crear un recurso compartido de archivos denominado aci-share-demo en la cuenta de almacenamiento:
az storage share create --name aci-share-demo
Obtención de credenciales de almacenamiento
Para montar un recurso compartido de archivos de Azure como un volumen en Azure Container Instances, necesita estos tres valores:
- Nombre de la cuenta de almacenamiento
- Nombre del recurso compartido
- Clave de acceso de cuenta de almacenamiento
Ya tiene los dos primeros valores. El nombre de cuenta de almacenamiento se almacena en la variable de Bash STORAGE_ACCOUNT_NAME
. Se especificó aci-share-demo como el nombre del recurso compartido en el paso anterior. Aquí obtendrá el valor que falta: la clave de acceso de la cuenta de almacenamiento.
Ejecute el siguiente comando para obtener la clave de la cuenta de almacenamiento:
STORAGE_KEY=$(az storage account keys list \ --resource-group learn-deploy-aci-rg \ --account-name $STORAGE_ACCOUNT_NAME \ --query "[0].value" \ --output tsv)
El resultado se almacena en una variable de Bash llamada
STORAGE_KEY
.Como paso opcional, imprima el nombre de la clave de almacenamiento en la consola.
echo $STORAGE_KEY
Implementación de un contenedor y montaje del recurso compartido de archivos
Para montar un recurso compartido de archivos de Azure como volumen en un contenedor, especifique el recurso compartido y el punto de montaje del volumen al crear el contenedor.
Ejecute este comando
az container create
para crear un contenedor que monte/aci/logs/
en el recurso compartido de archivos:az container create \ --resource-group learn-deploy-aci-rg \ --name aci-demo-files \ --image mcr.microsoft.com/azuredocs/aci-hellofiles \ --location eastus \ --ports 80 \ --ip-address Public \ --azure-file-volume-account-name $STORAGE_ACCOUNT_NAME \ --azure-file-volume-account-key $STORAGE_KEY \ --azure-file-volume-share-name aci-share-demo \ --azure-file-volume-mount-path /aci/logs/
Ejecute
az container show
para obtener la dirección IP pública de su contenedor:az container show \ --resource-group learn-deploy-aci-rg \ --name aci-demo-files \ --query ipAddress.ip \ --output tsv
Desde un explorador, vaya a la dirección IP de su contenedor. Aparece esta página:
Escriba cualquier texto en el formulario y seleccione Enviar. Esta acción crea un archivo que contiene el texto que escribió en el recurso compartido de archivos de Azure.
Ejecute este comando
az storage file list
para mostrar los archivos que se encuentran en el recurso compartido de archivos:az storage file list -s aci-share-demo -o table
Ejecute
az storage file download
para descargar un archivo en la sesión de Cloud Shell. Reemplace <filename> por uno de los archivos que aparecían en el paso anterior.az storage file download -s aci-share-demo -p <filename>
Ejecute el comando
cat
para imprimir el contenido del archivo.cat <filename>
Recuerde que los datos se conservan cuando se cierra el contenedor. Puede montar el recurso compartido de archivos en otras instancias de contenedor para hacer que los datos estén disponibles.