Azure Container Instances'ta Azure dosya paylaşımı bağlama

Tamamlandı

Azure Container Instances varsayılan olarak durum bilgilerini saklamaz. Kapsayıcı kilitlenir veya durdurulursa tüm durum bilgileri kaybolur. Durum bilgilerinin kapsayıcının ömründen bağımsız olarak kalıcı olmasını sağlamak için dış bir depodan birim bağlamanız gerekir. Bu ünitede gösterildiği gibi Azure Container Instances, Azure Dosyalar ile oluşturulmuş bir Azure dosya paylaşımını bağlayabilir. Azure Dosyaları bulutta tamamen yönetilen dosya paylaşımları sunar. Bu dosyalara sektör standardı olan Sunucu İleti Bloğu (SMB) protokolü aracılığıyla erişilebilir. Azure Container Instances ile Azure dosya paylaşımı kullanmak, Azure sanal makineleriyle Azure dosya paylaşımı kullanmaya benzer dosya paylaşım özellikleri sağlar.

Sınırlamalar

  • Azure Dosyalar paylaşımlarını yalnızca Linux kapsayıcılarına bağlayabilirsiniz.
  • Azure dosya paylaşımı birimi bağlama, Linux kapsayıcısının kök olarak çalıştırılmasını gerektirir.
  • Azure Dosya paylaşımı birim bağlamaları CIFS desteğiyle sınırlıdır.

Kapsayıcıyı dağıtma ve birimi bağlama

Azure CLI kullanarak bir Azure dosya paylaşımını bir kapsayıcıya birim olarak bağlamak için, ile az container createkapsayıcıyı oluştururken paylaşım ve birim bağlama noktasını belirtin. Aşağıda komutun bir örneği verilmiştir:

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/

Değerin --dns-name-label , kapsayıcı örneğini oluşturduğunuz Azure bölgesinde benzersiz olması gerekir. Komutu yürütürken bir DNS ad etiketi hata iletisi alırsanız, önceki komuttaki değeri güncelleştirin.

Kapsayıcıyı dağıtma ve birimi bağlama - YAML

Ayrıca bir kapsayıcı grubu dağıtabilir ve Azure CLI ve YAML şablonuyla bir kapsayıcıya birim bağlayabilirsiniz. Birden çok kapsayıcıdan oluşan kapsayıcı gruplarını dağıtırken tercih edilen yöntem YAML şablonuyla dağıtmaktır.

Aşağıdaki YAML şablonu, görüntüyle aci-hellofiles oluşturulmuş bir kapsayıcı içeren bir kapsayıcı grubu tanımlar. Kapsayıcı, daha önce birim olarak oluşturulan Azure dosya paylaşımı acishare'i bağlar. Aşağıda örnek bir YAML dosyası verilmiştir.

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

Birden çok birimi bağlama

Bir kapsayıcı örneğine birden çok birim bağlamak için Azure Resource Manager şablonu veya YAML dosyası kullanarak dağıtmanız gerekir. Şablon veya YAML dosyası kullanmak için, paylaşım ayrıntılarını sağlayın ve şablonun bölümündeki diziyi volumes properties doldurarak birimleri tanımlayın.

Örneğin, my Depolama Account depolama hesabında share1 ve share2 adlı iki Azure Dosyalar paylaşımı oluşturduysanız, volumes Resource Manager şablonundaki dizi aşağıdakine benzer şekilde görünür:

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

Ardından, birimleri bağlamak istediğiniz kapsayıcı grubundaki her kapsayıcı için kapsayıcı tanımının properties bölümündeki diziyi doldurunvolumeMounts. Örneğin, bu, daha önce tanımlanmış olan myvolume1 ve myvolume2 birimlerini bağlar:

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