Montar uma partilha de ficheiros do Azure no Azure Container Instances
Por predefinição, o Azure Container Instances não tem monitorização de estado. Se o contentor falhar ou parar, todo o seu estado será perdido. Para manter as informações de estado para além da duração do contentor, tem de montar um volume a partir de um arquivo externo. Conforme mostrado nesta unidade, as Instâncias de Contêiner do Azure podem montar um compartilhamento de arquivos do Azure criado com os Arquivos do Azure. Os Ficheiros do Azure oferecem partilhas de ficheiros totalmente geridas na cloud, que são acessíveis através do protocolo Server Message Block (SMB) norma do setor. O uso de um compartilhamento de arquivos do Azure com as Instâncias de Contêiner do Azure fornece recursos de compartilhamento de arquivos semelhantes ao uso de um compartilhamento de arquivos do Azure com máquinas virtuais do Azure.
Limitações
- Você só pode montar compartilhamentos do Azure Files em contêineres do Linux.
- A montagem do volume de compartilhamento de arquivos do Azure requer que o contêiner Linux seja executado como raiz.
- As montagens de volume de compartilhamento de arquivos do Azure são limitadas ao suporte a CIFS.
Implementar o contentor e montar o volume
Para montar um compartilhamento de arquivos do Azure como um volume em um contêiner usando a CLI do Azure, especifique o ponto de montagem de compartilhamento e volume ao criar o contêiner com az container create
o . Segue-se um exemplo do comando:
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/
O --dns-name-label
valor deve ser exclusivo dentro da região do Azure onde você cria a instância de contêiner. Atualize o valor no comando anterior se receber uma mensagem de erro de rótulo de nome DNS ao executar o comando.
Implantar contêiner e volume de montagem - YAML
Você também pode implantar um grupo de contêineres e montar um volume em um contêiner com a CLI do Azure e um modelo YAML. A implantação pelo modelo YAML é o método preferencial ao implantar grupos de contêineres que consistem em vários contêineres.
O modelo YAML a seguir define um grupo de contêineres com um contêiner criado com a aci-hellofiles
imagem. O contêiner monta o acishare de compartilhamento de arquivos do Azure criado anteriormente como um volume. A seguir está um exemplo de arquivo 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
Monte vários volumes
Para montar vários volumes em uma instância de contêiner, você deve implantar usando um modelo do Azure Resource Manager ou um arquivo YAML. Para usar um modelo ou arquivo YAML, forneça os detalhes do compartilhamento e defina os volumes preenchendo a volumes
matriz na properties
seção do modelo.
Por exemplo, se você criou dois compartilhamentos de Arquivos do Azure chamados share1 e share2 na conta de armazenamento myStorageAccount, a volumes
matriz em um modelo do Gerenciador de Recursos será semelhante à seguinte:
"volumes": [{
"name": "myvolume1",
"azureFile": {
"shareName": "share1",
"storageAccountName": "myStorageAccount",
"storageAccountKey": "<storage-account-key>"
}
},
{
"name": "myvolume2",
"azureFile": {
"shareName": "share2",
"storageAccountName": "myStorageAccount",
"storageAccountKey": "<storage-account-key>"
}
}]
Em seguida, para cada contêiner no grupo de contêineres no qual você deseja montar os volumes, preencha a volumeMounts
properties
matriz na seção da definição de contêiner. Por exemplo, isso monta os dois volumes, myvolume1 e myvolume2, previamente definidos:
"volumeMounts": [{
"name": "myvolume1",
"mountPath": "/mnt/share1/"
},
{
"name": "myvolume2",
"mountPath": "/mnt/share2/"
}]