演習 - データ ボリュームを使用する

完了

既定では、Azure Container Instances はステートレスです。 コンテナーがクラッシュまたは停止すると、すべての状態が失われます。 コンテナーの有効期間後も状態を保持するには、外部ストアからボリュームをマウントする必要があります。

データを保存し、後でそれにアクセスできるように、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 Container Instances にボリュームとして Azure ファイル共有をマウントするには、次の 3 つの値が必要です。

  • ストレージ アカウント名
  • [共有名]
  • ストレージ アカウントのアクセス キー

最初の 2 つの値が既に与えられています。 ストレージ アカウントの名前は 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 アドレスに移動します。 このページが表示されます。

    Screenshot of the Azure Container Instances file share demo running in a browser.

  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> を、前の手順で表示されたファイルの 1 つに置き換えます。

    az storage file download -s aci-share-demo -p <filename>
    
  7. cat コマンドを実行し、ファイルのコンテンツを出力します。

    cat <filename>
    

コンテナーを終了させてもデータは残ります。 他のコンテナー インスタンスでデータを利用できるように、それらにファイル共有をマウントできます。