Упражнение. Использование томов данных
Состояние в экземплярах контейнеров Azure не отслеживается по умолчанию. Если происходит сбой в контейнере или он завершает работу, все сведения о состоянии будут утеряны. Чтобы сохранить состояние после истечения времени существования контейнера, необходимо подключить том из внешнего хранилища.
В этом упражнении вы подключаете общую папку Azure к экземпляру контейнера Azure, чтобы сохранить данные и получить к нему доступ позже.
Создание общей папки Azure
Во-первых, вы создаете учетную запись хранения и общую папку. Позже вы можете сделать общую папку доступной для экземпляра контейнера Azure.
Учетная запись хранения должна иметь уникальное имя. Для обучения выполните следующую команду, чтобы сохранить уникальное имя в переменной Bash:
STORAGE_ACCOUNT_NAME=mystorageaccount$RANDOM
Выполните следующую
az storage account create
команду, чтобы создать учетную запись хранения:az storage account create \ --resource-group learn-deploy-aci-rg \ --name $STORAGE_ACCOUNT_NAME \ --sku Standard_LRS \ --location eastus
Выполните следующую команду, чтобы поместить учетную запись хранения строка подключения в переменную среды с именем
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
— это специальная переменная среды, которую понимает Azure CLI. Частьexport
делает эту переменную доступной для других команд CLI, которые выполняются позже.Выполните следующую команду, чтобы создать общую папку с именем aci-share-demo в учетной записи хранения:
az storage share create --name aci-share-demo
Получение учетных данных хранилища
Чтобы подключить файловый ресурс Azure в качестве тома в экземплярах контейнеров Azure, вам потребуются эти три значения:
- Storage account name
- Имя общего ресурса
- Ключ доступа к учетной записи хранения
У вас уже есть первые два значения. Имя учетной записи хранения содержится в переменной Bash STORAGE_ACCOUNT_NAME
. На предыдущем шаге вы указали в качестве имени ресурса aci-share-demo. Здесь вы получите оставшееся значение: ключ доступа к учетной записи хранения.
Выполните следующую команду, чтобы получить ключ учетной записи хранения:
STORAGE_KEY=$(az storage account keys list \ --resource-group learn-deploy-aci-rg \ --account-name $STORAGE_ACCOUNT_NAME \ --query "[0].value" \ --output tsv)
Результат сохраняется в переменной Bash с именем
STORAGE_KEY
.В качестве дополнительного шага выведите ключ учетной записи хранения на консоли.
echo $STORAGE_KEY
Развертывание контейнера и подключение файлового ресурса
Чтобы подключить общий файловый ресурс Azure в качестве тома в контейнере, укажите точку подключения для общего ресурса и тома при создании контейнера.
Выполните следующую
az container create
команду, чтобы создать контейнер, который подключается/aci/logs/
к общей папке: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/
Выполните команду
az container show
, чтобы получить общедоступный IP-адрес контейнера:az container show \ --resource-group learn-deploy-aci-rg \ --name aci-demo-files \ --query ipAddress.ip \ --output tsv
В браузере перейдите по IP-адресу контейнера. Вы получите эту страницу:
Введите текст в форму и нажмите кнопку "Отправить". Это действие создает файл, содержащий текст, введенный в файловом ресурсе Azure.
Выполните следующую
az storage file list
команду, чтобы отобразить файлы, содержащиеся в общей папке:az storage file list -s aci-share-demo -o table
Выполните
az storage file download
, чтобы загрузить файл в сеанс Cloud Shell. Замените <имя> файла одним из файлов, которые появились на предыдущем шаге:az storage file download -s aci-share-demo -p <filename>
Выполните команду
cat
, чтобы вывести содержимое файла.cat <filename>
Помните, что ваши данные сохраняются при выходе контейнера. Подключите файловый ресурс к другим экземплярам контейнера, чтобы данные были доступны для них.