Azure Container Instances'ta Azure dosya paylaşımı bağlama
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 create
kapsayı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/"
}]