练习 - 使用数据卷

已完成

默认情况下,Azure 容器实例是无状态的。 如果容器崩溃或停止,其所有状态都会丢失。 若要保存状态使其不受容器生存期限制,必须从外部存储装载卷。

将 Azure 文件共享装载到 Azure 容器实例中,以便可以存储数据并在以后访问它。

创建 Azure 文件共享

创建存储帐户和文件共享。 稍后,可以使文件共享可供 Azure 容器实例访问。

  1. 存储帐户需要唯一的名称。 为了方便学习,请运行以下命令,以在 Bash 变量中存储唯一名称:

    STORAGE_ACCOUNT_NAME=mystorageaccount$RANDOM
    
  2. 运行以下 az storage account create 命令,以创建存储帐户:

    az storage account create \
      --resource-group learn-deploy-aci-rg \
      --name $STORAGE_ACCOUNT_NAME \
      --sku Standard_LRS \
      --location eastus
    
  3. 运行以下命令,将存储帐户连接字符串放入名为 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 命令访问。

  4. 运行此命令,在存储帐户中创建名为 aci-share-demo 的文件共享:

    az storage share create --name aci-share-demo
    

获取存储凭证

要将 Azure 文件共享装载为 Azure 容器实例中的卷,需要下面三个值:

  • 存储帐户名称
  • 共享名
  • 存储帐户访问密钥

你已具有前两个值。 存储帐户名称存储在 STORAGE_ACCOUNT_NAME Bash 变量中。 你已在上一步骤中指定 aci-share-demo 作为共享名称。 你将在此处获得其余值:存储帐户访问密钥。

  1. 运行以下命令来获取存储帐户密钥:

    STORAGE_KEY=$(az storage account keys list \
      --resource-group learn-deploy-aci-rg \
      --account-name $STORAGE_ACCOUNT_NAME \
      --query "[0].value" \
      --output tsv)
    

    结果存储在名为 STORAGE_KEY 的 Bash 变量中。

  2. (可选)将存储密钥打印到控制台。

    echo $STORAGE_KEY
    

部署容器并装载文件共享

要将 Azure 文件共享作为卷装载到容器中,请在创建容器时指定共享和卷装入点。

  1. 运行此 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/
    
  2. 运行 az container show 以获取容器的公共 IP 地址:

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo-files \
      --query ipAddress.ip \
      --output tsv
    
  3. 在浏览器中,导航到容器的 IP 地址。 你会看到以下页面:

    显示正在浏览器中运行的 Azure 容器实例文件共享演示的屏幕截图。

  4. 在表单中输入一些文本,并选择“提交”。 此操作将创建一个文件,其中包含在 Azure 文件共享中输入的文本。

  5. 运行此 az storage file list 命令,显示文件共享中包含的文件:

    az storage file list -s aci-share-demo -o table
    
  6. 运行 az storage file download,将文件下载到 Cloud Shell 会话。 将 <filename> 替换为上一步中出现的文件之一:

    az storage file download -s aci-share-demo -p <filename>
    
  7. 运行 cat 命令以打印文件的内容。

    cat <filename>
    

请记住容器退出时数据仍然存在。 可将文件共享装载到其他容器实例,使该数据可供它们使用。