Připojení sdílené složky ve službě Azure Container Instances

Dokončeno

Ve výchozím nastavení je služba Azure Container Instances bezstavová. Pokud u kontejneru dojde k chybě nebo se kontejner zastaví, veškerý jeho stav se ztratí. Pokud chcete zachovat stav i po skončení doby života kontejneru, je nutné připojit svazek z externího úložiště. Jak je znázorněno v této lekci, služba Azure Container Instances může připojit sdílenou složku Azure vytvořenou pomocí služby Azure Files. Azure Files nabízí plně spravované sdílené složky v cloudu, které jsou přístupné přes standardní protokol Server Message Block (SMB). Použití sdílené složky Azure se službou Azure Container Instances poskytuje funkce pro sdílení souborů podobné použití sdílené složky Azure s virtuálními počítači Azure.

Omezení

  • Sdílené složky Azure Files můžete připojit pouze ke kontejnerům Linuxu.
  • Připojení svazku sdílené složky Azure vyžaduje, aby kontejner Linux běžel jako root.
  • Připojení svazků sdílené složky Azure jsou omezená na podporu CIFS.

Nasazení kontejneru a připojení svazku

Pokud chcete připojit sdílenou složku Azure jako svazek v kontejneru pomocí Azure CLI, při vytváření kontejneru az container createpomocí rozhraní příkazového řádku Azure zadejte přípojný bod sdílené složky a svazku. Následuje příklad příkazu:

az container create \
    --resource-group $ACI_PERS_RESOURCE_GROUP \
    --name hellofiles \
    --image mcr.microsoft.com/azuredocs/aci-hellofiles \
    --dns-name-label aci-demo \
    --ports 80 \
    --azure-file-volume-account-name $ACI_PERS_STORAGE_ACCOUNT_NAME \
    --azure-file-volume-account-key $STORAGE_KEY \
    --azure-file-volume-share-name $ACI_PERS_SHARE_NAME \
    --azure-file-volume-mount-path /aci/logs/

Hodnota --dns-name-label musí být jedinečná v rámci oblasti Azure, ve které vytváříte instanci kontejneru. Pokud se při spuštění příkazu zobrazí chybová zpráva popisku názvu DNS, aktualizujte hodnotu v předchozím příkazu.

Nasazení kontejneru a připojení svazku – YAML

Můžete také nasadit skupinu kontejnerů a připojit svazek do kontejneru pomocí Azure CLI a šablony YAML. Nasazení pomocí šablony YAML je upřednostňovanou metodou při nasazování skupin kontejnerů sestávajících z více kontejnerů.

Následující šablona YAML definuje skupinu kontejnerů s jedním kontejnerem vytvořeným s imagí aci-hellofiles . Kontejner připojí sdílenou složku Azure vytvořenou dříve jako svazek. Následuje příklad souboru YAML.

apiVersion: '2019-12-01'
location: eastus
name: file-share-demo
properties:
  containers:
  - name: hellofiles
    properties:
      environmentVariables: []
      image: mcr.microsoft.com/azuredocs/aci-hellofiles
      ports:
      - port: 80
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
      volumeMounts:
      - mountPath: /aci/logs/
        name: filesharevolume
  osType: Linux
  restartPolicy: Always
  ipAddress:
    type: Public
    ports:
      - port: 80
    dnsNameLabel: aci-demo
  volumes:
  - name: filesharevolume
    azureFile:
      sharename: acishare
      storageAccountName: <Storage account name>
      storageAccountKey: <Storage account key>
tags: {}
type: Microsoft.ContainerInstance/containerGroups

Připojení více svazků

Pokud chcete připojit více svazků v instanci kontejneru, musíte nasadit pomocí šablony Azure Resource Manageru nebo souboru YAML. Pokud chcete použít šablonu nebo soubor YAML, zadejte podrobnosti o sdílené složce a definujte svazky vyplněním volumes pole v properties části šablony.

Pokud jste například vytvořili dvě sdílené složky Azure Files s názvem share1podobně jako následující:

"volumes": [{
  "name": "myvolume1",
  "azureFile": {
    "shareName": "share1",
    "storageAccountName": "myStorageAccount",
    "storageAccountKey": "<storage-account-key>"
  }
},
{
  "name": "myvolume2",
  "azureFile": {
    "shareName": "share2",
    "storageAccountName": "myStorageAccount",
    "storageAccountKey": "<storage-account-key>"
  }
}]

Dále pro každý kontejner ve skupině kontejnerů, ve které chcete připojit svazky, naplňte volumeMounts pole v properties části definice kontejneru. Tím se například připojí dva svazky myvolume1 a myvolume2, dříve definované:

"volumeMounts": [{
  "name": "myvolume1",
  "mountPath": "/mnt/share1/"
},
{
  "name": "myvolume2",
  "mountPath": "/mnt/share2/"
}]