Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Um aplicativo de contêiner tem acesso a diferentes tipos de armazenamento. Um único aplicativo pode aproveitar mais de um tipo de armazenamento, se necessário.
Nota
Evite usar caracteres especiais em nomes de volume para evitar falhas de implantação. Por exemplo, um volume nomeado credentials.json contém um caractere especial (.) que resulta em um erro de implantação.
| Tipo de armazenamento | Descrição | Persistência | Exemplo de utilização |
|---|---|---|---|
| Armazenamento com escopo de contêiner | Armazenamento efêmero disponível para um contêiner em execução | Os dados ficam disponíveis até que o contêiner seja desligado | Escrevendo um cache de aplicativo local. |
| Armazenamento com escopo de réplica | Armazenamento efêmero para compartilhar arquivos entre contêineres na mesma réplica | Os dados ficam disponíveis até que a réplica seja desligada | O contentor principal da aplicação grava arquivos de log que um contentor sidecar processa. |
| Ficheiros do Azure | Armazenagem permanente | Os dados são armazenados no Ficheiros do Azure | Gravar arquivos em um compartilhamento de arquivos para tornar os dados acessíveis por outros sistemas. |
Nota
Azure Container Apps não suporta montar partilhas de ficheiros a partir do Azure NetApp Files ou do Armazenamento de Blobs do Azure.
Armazenamento efêmero
Um aplicativo de contêiner pode ler e gravar dados temporários em armazenamento efêmero. O armazenamento efêmero pode ter como escopo um contêiner ou uma réplica. A quantidade total de armazenamento com escopo de contêiner e de réplica disponível para cada réplica depende do número total de vCPUs alocadas para a réplica.
| processadores virtuais (vCPUs) | Armazenamento efêmero total |
|---|---|
| 0,25 ou inferior | 1 GiB |
| 0,5 ou inferior | 2 GiB |
| 1 ou inferior | 4 GiB |
| Mais de 1 | 8 GiB |
Armazenamento com escopo de contêiner
Um contêiner pode gravar em seu próprio sistema de arquivos.
O armazenamento do sistema de arquivos de contêiner tem as seguintes características:
- O armazenamento é temporário e desaparece quando o contentor desliga ou reinicia.
- Apenas processos a correr no contentor atual podem ver ficheiros escritos neste armazenamento.
Armazenamento com escopo de réplica
Podes montar um volume efémero e temporário equivalente ao EmptyDir (diretório vazio) no Kubernetes. Esse armazenamento tem como escopo uma única réplica. Use um EmptyDir volume para partilhar dados entre contentores na mesma réplica.
O armazenamento com escopo de réplica tem as seguintes características:
- Os ficheiros permanecem durante toda a vida útil da réplica.
- Se um contêiner em uma réplica for reiniciado, os arquivos no volume permanecerão.
- Qualquer contêiner de inicialização ou aplicativo na réplica pode montar o mesmo volume.
- Um contêiner pode montar vários
EmptyDirvolumes.
Para configurar o armazenamento com escopo de réplica, primeiro defina um EmptyDir volume na revisão. Em seguida, defina uma montagem de volume em um ou mais contêineres na revisão.
Pré-requisitos
| Requisito | Instruções |
|---|---|
| Conta Azure | Se você não tiver uma, crie uma conta gratuitamente. |
| Ambiente do Azure Container Apps | Crie um ambiente de aplicativos de contêiner. |
| Configuração de identidade gerida | Certifique-se de que a identidade gerida associada ao seu ambiente Container Apps tem as funções apropriadas para aceder a Ficheiros do Azure. |
Configuração
Quando configura armazenamento com escopo de réplica usando a CLI do Azure, deve usar uma definição YAML para criar ou atualizar a sua aplicação container.
Para atualizar um aplicativo contêiner existente para usar o armazenamento com escopo de réplica, exporte a especificação do seu aplicativo para um arquivo YAML chamado app.yaml.
az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yamlFaça as seguintes alterações na especificação do seu aplicativo de contêiner.
- Adicione uma
volumesmatriz àtemplateseção de sua definição de aplicativo de contêiner e defina um volume. Se você já tiver umavolumesmatriz, adicione um novo volume à matriz.- O
nameé um identificador para o volume. - Use
EmptyDircomo ostorageType.
- O
- Para cada contentor no template onde pretende montar o volume, defina uma montagem de volume na matriz da definição do contentor.
- O
volumeNameé o nome definido navolumesmatriz. - O
mountPathé o caminho no contêiner para montar o volume.
- O
properties: managedEnvironmentId: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/managedEnvironments/<ENVIRONMENT_NAME> configuration: activeRevisionsMode: Single template: containers: - image: <IMAGE_NAME1> name: my-container-1 volumeMounts: - mountPath: /myempty volumeName: myempty - image: <IMAGE_NAME_2> name: my-container-2 volumeMounts: - mountPath: /myempty volumeName: myempty volumes: - name: myempty storageType: EmptyDir- Adicione uma
Atualize a sua aplicação container usando o ficheiro YAML.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Para um exemplo completo, veja a especificação YAML.
Para criar um volume com escopo de réplica e montá-lo em um contêiner, faça as seguintes alterações no recurso de aplicativos de contêiner em um modelo ARM:
- Adicione uma
volumesmatriz àtemplateseção de sua definição de aplicativo de contêiner e defina um volume. Se você já tiver umavolumesmatriz, adicione um novo volume à matriz.- O
nameé um identificador para o volume. - Use
EmptyDircomo ostorageType.
- O
- Para cada contentor no template onde pretende montar o volume, defina uma montagem de volume na matriz da definição do contentor.
- O
volumeNameé o nome definido navolumesmatriz. - O
mountPathé o caminho no contêiner para montar o volume.
- O
Exemplo de um fragmento de modelo do ARM:
{
"apiVersion": "2022-03-01",
"type": "Microsoft.App/containerApps",
"name": "[parameters('containerappName')]",
"location": "[parameters('location')]",
"properties": {
...
"template": {
"revisionSuffix": "myrevision",
"containers": [
{
"name": "main",
"image": "[parameters('container_image')]",
"resources": {
"cpu": 0.5,
"memory": "1Gi"
},
"volumeMounts": [
{
"mountPath": "/myempty",
"volumeName": "myempty"
}
]
},
{
"name": "sidecar",
"image": "[parameters('sidecar_image')]",
"resources": {
"cpu": 0.5,
"memory": "1Gi"
},
"volumeMounts": [
{
"mountPath": "/myempty",
"volumeName": "myempty"
}
]
}
],
"scale": {
"minReplicas": 1,
"maxReplicas": 3
},
"volumes": [
{
"name": "myempty",
"storageType": "EmptyDir"
}
]
}
}
}
Consulte a especificação da API do modelo ARM para obter um exemplo completo.
Para criar um volume com escopo de réplica e montá-lo em um contêiner, implemente uma nova revisão da sua aplicação em contêiner usando o portal do Azure.
No portal do Azure, vai à tua aplicação container.
Selecione Gerenciamento de revisão no menu à esquerda.
Selecione Criar nova revisão.
Selecione o contentor onde deseja montar o volume.
No painel de contexto Editar um contêiner, selecione a guia Montagens de volume.
Na secção de armazenamento efémero , crie um novo volume com a seguinte informação:
- Nome do volume: um nome para o volume efémero.
- Caminho de montagem: o caminho absoluto no contêiner para montar o volume.
Selecione Salvar para salvar as alterações e sair do painel de contexto.
Selecione Criar para criar a nova revisão.
Ficheiros do Azure volume
Podes montar uma partilha de ficheiros a partir de Ficheiros do Azure como um volume num contentor.
O armazenamento do Ficheiros do Azure apresenta as seguintes características:
- Os arquivos gravados no local de montagem são mantidos na partilha de arquivos.
- Os arquivos no compartilhamento estão disponíveis através do local de montagem.
- Vários contêineres podem montar o mesmo compartilhamento de arquivos, incluindo aqueles que estão em outra réplica, revisão ou aplicativo de contêiner.
- Todos os contentores que montam a partilha podem aceder a ficheiros escritos por qualquer outro contentor ou método.
- Mais do que um volume Ficheiros do Azure pode ser montado num único contentor.
O Ficheiros do Azure suporta tanto protocolos SMB (Server Message Block) como NFS (Network File System). Podes montar uma partilha Ficheiros do Azure usando qualquer um dos protocolos. O compartilhamento de arquivos definido no ambiente deve ser configurado com o mesmo protocolo usado pelo compartilhamento de arquivos na conta de armazenamento.
Para ativar o armazenamento do Ficheiros do Azure no seu contentor, precisa de configurar o seu ambiente e a aplicação do contentor da seguinte forma:
No portal Azure, abra a sua Container App.
No painel de navegação esquerdo, em Definições, selecione Montagens de armazenamento.
A partir daqui podes adicionar um novo ponto de montagem:
- Escolha o tipo de armazenamento (Azure Partilha de ficheiros ou Azure Blob).
- Forneça a configuração necessária (conta de armazenamento, nome de partilha, modo de acesso).
- Guardar a montagem.
- Crie e implemente uma nova versão da sua aplicação container para aplicar as alterações.
- Crie uma definição de armazenamento no ambiente Container Apps.
- Se você estiver usando NFS, seu ambiente deverá ser configurado com uma VNet personalizada e a conta de armazenamento deverá ser configurada para permitir o acesso a partir da VNet. Para obter mais informações, consulte NFS partilhas de ficheiros em Ficheiros do Azure .
- Se o seu ambiente estiver configurado com uma rede virtual personalizada, você deverá permitir as portas 445 e 2049 no NSG (grupo de segurança de rede) associado à sub-rede.
- Defina um volume do tipo
AzureFile(SMB) ouNfsAzureFile(NFS) em uma revisão. - Defina uma montagem de volume em um ou mais contêineres na revisão.
- A conta de armazenamento Ficheiros do Azure utilizada deve ser acessível a partir da rede virtual da sua aplicação de container. Para obter mais informações, consulte Conceder acesso a partir de uma rede virtual.
Pré-requisitos
| Requisito | Instruções |
|---|---|
| Conta Azure | Se você não tiver uma, crie uma conta gratuitamente. |
| conta de armazenamento do Azure | Criar uma conta de armazenamento. |
| Ambiente do Azure Container Apps | Crie um ambiente de aplicativos de contêiner. |
Configuração
Quando configura uma aplicação container para montar um volume Ficheiros do Azure usando CLI do Azure, deve usar uma definição YAML para criar ou atualizar a sua aplicação container.
Para um tutorial passo a passo sobre como montar uma partilha de ficheiros SMB, veja Criar uma montagem de armazenamento Ficheiros do Azure em Azure Container Apps.
Adicione uma definição de armazenamento ao seu ambiente de Aplicativos de Contêiner.
az containerapp env storage set --name my-env --resource-group my-group \ --storage-name mystorage \ --storage-type AzureFile \ --azure-file-account-name <STORAGE_ACCOUNT_NAME> \ --azure-file-account-key <STORAGE_ACCOUNT_KEY> \ --azure-file-share-name <STORAGE_SHARE_NAME> \ --access-mode ReadWriteSubstitua
<STORAGE_ACCOUNT_NAME>e<STORAGE_ACCOUNT_KEY>pelo nome e chave da sua conta de armazenamento. Substitua<STORAGE_SHARE_NAME>pelo nome do compartilhamento de arquivos na conta de armazenamento.Valores válidos para
--access-modesãoReadWriteeReadOnly.Para atualizar um aplicativo de contêiner existente para montar um compartilhamento de arquivos, exporte a especificação do seu aplicativo para um arquivo YAML chamado app.yaml.
az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yamlFaça as seguintes alterações na especificação do seu aplicativo de contêiner.
- Adicione uma
volumesmatriz àtemplateseção de sua definição de aplicativo de contêiner e defina um volume. Se você já tiver umavolumesmatriz, adicione um novo volume à matriz.- O
nameé um identificador para o volume. - Para
storageType, useAzureFilepara SMB ouNfsAzureFilepara NFS. Esse valor deve corresponder ao tipo de armazenamento definido no ambiente. - Para
storageName, use o nome do armazenamento definido no ambiente. - O
mountOptionsé uma cadeia de opções de montagem separada por vírgula. Para obter mais informações, consulte utilizar as definições de mountOptions no Ficheiros do Azure. - A
secretslista é uma lista de segredos para montar no volume. Para mais informações, consulte Montar segredos num volume.
- O
- Para cada contentor no modelo que pretende montar o armazenamento Ficheiros do Azure, defina um ponto de montagem no array
volumeMountsda definição do contentor.- O
volumeNameé o nome definido navolumesmatriz. - O
mountPathé o caminho no contêiner para montar o volume. - O
subPathé o caminho no volume a ser montado. Se não especificares este valor, a raiz do volume é montada. Para mais informações, consulte (#sub-caminho).
- O
properties: managedEnvironmentId: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/managedEnvironments/<ENVIRONMENT_NAME> configuration: template: containers: - image: <IMAGE_NAME> name: my-container volumeMounts: - volumeName: azure-files-volume mountPath: /my-files subPath: my-sub-path volumes: - name: azure-files-volume storageType: AzureFile storageName: mystorage- Adicione uma
Atualize a sua aplicação container usando o ficheiro YAML.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Para um exemplo completo, veja a especificação YAML.
Os seguintes excertos de modelos ARM demonstram como adicionar uma partilha Ficheiros do Azure a um ambiente Container Apps e utilizá-la numa aplicação container.
Adicione um
storagesrecurso filho ao ambiente Container Apps.{ "type": "Microsoft.App/managedEnvironments", "apiVersion": "2022-03-01", "name": "[parameters('environment_name')]", "location": "[parameters('location')]", "properties": { "daprAIInstrumentationKey": "[parameters('dapr_ai_instrumentation_key')]", "appLogsConfiguration": { "destination": "log-analytics", "logAnalyticsConfiguration": { "customerId": "[parameters('log_analytics_customer_id')]", "sharedKey": "[parameters('log_analytics_shared_key')]" } } }, "resources": [ { "type": "storages", "name": "myazurefiles", "apiVersion": "2022-03-01", "dependsOn": [ "[resourceId('Microsoft.App/managedEnvironments', parameters('environment_name'))]" ], "properties": { "azureFile": { "accountName": "[parameters('storage_account_name')]", "accountKey": "[parameters('storage_account_key')]", "shareName": "[parameters('storage_share_name')]", "accessMode": "ReadWrite" } } } ] }Atualize o recurso do aplicativo de contêiner para adicionar um volume e uma montagem de volume.
{ "apiVersion": "2023-05-01", "type": "Microsoft.App/containerApps", "name": "[parameters('containerappName')]", "location": "[parameters('location')]", "properties": { ... "template": { "revisionSuffix": "myrevision", "containers": [ { "name": "main", "image": "[parameters('container_image')]", "resources": { "cpu": 0.5, "memory": "1Gi" }, "volumeMounts": [ { "mountPath": "/myfiles", "volumeName": "azure-files-volume", "subPath": "my-sub-path" } ] } ], "scale": { "minReplicas": 1, "maxReplicas": 3 }, "volumes": [ { "name": "azure-files-volume", "storageType": "AzureFile", "storageName": "myazurefiles" } ] } } }- Adicione uma
volumesmatriz àtemplateseção de sua definição de aplicativo de contêiner e defina um volume. Se você já tiver umavolumesmatriz, adicione um novo volume à matriz.- O
nameé um identificador para o volume. - Para
storageType, useAzureFilepara SMB ouNfsAzureFilepara NFS. Esse valor deve corresponder ao tipo de armazenamento definido no ambiente. - Para
storageName, use o nome do armazenamento definido no ambiente. - O
mountOptionsé uma cadeia de opções de montagem separada por vírgula. Para mais informações, consulte Utilizar as definições de mountOptions em Ficheiros do Azure. - A
secretslista é uma lista de segredos para montar no volume. Para mais informações, consulte Montar segredos num volume.
- O
- Para cada contentor no modelo em que pretende montar o armazenamento Ficheiros do Azure, defina uma montagem de volume na definição do contentor no array
volumeMounts.- O
volumeNameé o nome definido navolumesmatriz. - O
mountPathé o caminho no contêiner para montar o volume. - O
subPath(opcional) é o caminho no volume a ser montado. Se não especificar, a raiz de volume fica montada. Para mais informações, consulte (#sub-caminho).
- O
- Adicione uma
Consulte a especificação da API do modelo ARM para obter um exemplo completo.
Para configurar uma montagem de volume para armazenamento Ficheiros do Azure no portal Azure, adicione uma partilha de ficheiros ao seu ambiente Container Apps e depois adicione uma montagem de volume à sua aplicação container criando uma nova revisão.
No portal do Azure, navegue até ao seu ambiente de Aplicações Container.
No painel de navegação, em Definições, selecione Montagens de Volume.
Selecione Adicionar.
Selecione Server Message Block (SMB) ou Network File System (NFS), dependendo do protocolo usado pelo compartilhamento de arquivos.
No painel de contexto Adicionar partilha de ficheiros, insira as seguintes informações:
- Nome: um nome para o compartilhamento de arquivos.
- Nome da conta de armazenamento: o nome da conta de armazenamento que contém o compartilhamento de arquivos.
- Chave da conta de armazenamento: a chave de acesso para a conta de armazenamento.
- Compartilhamento de arquivos: o nome do compartilhamento de arquivos.
- Modo de acesso: O modo de acesso para o compartilhamento de arquivos. Os valores válidos são Leitura/Gravação e Leitura apenas.
Selecione Adicionar para sair do painel de contexto.
Selecione Salvar para confirmar as alterações.
Vai à tua aplicação de contentores.
No painel de navegação, em Aplicativo, selecione Revisões e réplicas.
Selecione Criar nova revisão.
Na página Criar e implantar nova revisão, selecione a guia Volumes.
Selecione Adicionar.
No painel de contexto Adicionar volume , defina os seguintes valores.
- Volume type: Azure file volume.
- Nome: insira um nome de volume.
- Nome do compartilhamento de arquivos: selecione o compartilhamento de arquivos criado anteriormente.
- Opções de montagem: Opcionalmente, insira uma cadeia de opções de montagem separada por vírgula. Para obter mais informações, consulte Utilizar as definições mountOptions no Ficheiros do Azure.
Selecione Adicionar para sair do painel de contexto.
Na página Criar e reploy nova revisão, selecione a guia Contêiner.
Selecione o contentor onde deseja montar o volume.
No painel de contexto Editar um contêiner, selecione a guia Montagens de volume.
Em Nome do volume, selecione o volume criado anteriormente.
Em Caminho de montagem, insira o caminho absoluto no contenedor para montar o volume.
Em Subcaminho (opcional), insira o caminho no volume a ser montado. Se não especificares este valor, a raiz do volume é montada. Para mais informações, consulte (#sub-caminho).
Selecione Salvar para salvar as alterações e sair do painel de contexto.
Selecione Criar para criar a nova revisão.
Subcaminho
Quando montas uma partilha de ficheiros a partir do Ficheiros do Azure, podes especificar tanto um caminho de montagem como um subcaminho.
- Caminho de montagem: o caminho no contêiner onde você deseja montar o volume.
- Subcaminho: o caminho no volume que você deseja montar.
O subcaminho é opcional. Se não especificares um subcaminho, a raiz de volume é montada.
O subcaminho é um caminho relativo da raiz do volume. Não comeces o caminho do sub com /. Se especificar um subcaminho que comece com /, a sua aplicação container pode não começar. Por exemplo, my-volume-folder é um subcaminho válido, mas /my-volume-folder não é.
O subcaminho pode referir-se a uma pasta ou a um arquivo no volume.
Se o subcaminho se referir a uma pasta, o caminho de montagem deverá referir-se a uma pasta vazia no contêiner.
Se o subcaminho se referir a um ficheiro, o caminho de montagem deve referir-se a um ficheiro que ainda não existe no contentor.
Por exemplo, suponha que o subcaminho é
my-volume-folder/my-volume-file.txt, e o caminho de montagem é/my-container-folder/my-container-file.txt. A pasta/my-container-folderjá deve existir no contentor, mas ainda não deve conter o ficheiromy-container-file.txt.
O sistema ignora quaisquer barras no final de subcaminhos.