Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você 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.
Observação
Evite usar caracteres especiais nos nomes de volumes para evitar falhas na implantação. Por exemplo, um volume chamado credentials.json contém um caractere especial (.), o que resulta em um erro de implantação.
| Tipo de armazenamento | Descrição | Persistência | Exemplo de uso |
|---|---|---|---|
| Armazenamento com escopo de contêiner | Armazenamento efêmero disponível para um contêiner em execução | Os dados estão 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 estão disponíveis até que a réplica seja desligada | O contêiner do aplicativo principal que grava arquivos de log que um contêiner sidecar processa. |
| Arquivos do Azure | Armazenamento permanente | Os dados são persistidos nos Arquivos do Azure | Gravar arquivos em um compartilhamento de arquivos para tornar os dados acessíveis por outros sistemas. |
Observação
Os Aplicativos de Contêiner do Azure não dão suporte à montagem de compartilhamentos de arquivos 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 no 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 escopo de réplica disponível para cada réplica depende do número total de vCPUs alocadas para a réplica.
| vCPUs (unidades de processamento central virtual) | 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 contêiner é desligado ou reiniciado.
- Os arquivos gravados nesse armazenamento só são visíveis para processos em execução no contêiner atual.
Armazenamento com escopo de réplica
Você pode montar um volume temporário efêmero equivalente ao EmptyDir (diretório vazio) no Kubernetes. Esse armazenamento tem o escopo de uma única réplica. Use um volume EmptyDir para compartilhar dados entre contêineres na mesma réplica.
O armazenamento com escopo de réplica tem as seguintes características:
- Os arquivos são mantidos durante o tempo de vida da réplica.
- Se um contêiner em uma réplica for reiniciado, os arquivos no volume permanecerão.
- Todos os contêineres de inicialização ou aplicativo na réplica podem montar o mesmo volume.
- Um contêiner pode montar vários volumes
EmptyDir.
Para configurar o armazenamento com escopo de réplica, primeiro defina um volume EmptyDir na revisão. Defina uma montagem de volume em um ou mais contêineres na revisão.
Pré-requisitos
| Requisito | Instruções |
|---|---|
| Conta do Azure | Se você não tiver, crie uma conta gratuita. |
| Ambiente de Aplicativos de Contêiner do Azure | Crie um ambiente de aplicativos de contêiner. |
| Configuração de identidade gerenciada | Verifique se a identidade gerenciada associada ao seu ambiente de Aplicativos de Contêiner recebe as funções apropriadas para acessar os Arquivos do Azure. |
Configuração
Ao configurar o armazenamento com escopo de réplica usando a CLI do Azure, você deve usar uma definição YAML para criar ou atualizar seu aplicativo de contêiner.
Para atualizar um aplicativo de contêiner existente para usar o armazenamento com escopo de réplica, exporte a especificação do 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 aplicativo de contêiner.
- Adicione uma matriz
volumesà seçãotemplateda definição do aplicativo de contêiner e defina um volume. Se você já tiver uma matrizvolumes, adicione um novo volume à matriz.- O
nameé um identificador para o volume. - Use
EmptyDircomo ostorageType.
- O
- Para cada contêiner no modelo que você deseja montar o volume, defina uma montagem de volume na matriz
volumeMountsda definição de contêiner.- O
volumeNamenome é definido na matrizvolumes. - É
mountPatho 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 matriz
Atualize seu aplicativo de contêiner usando o arquivo YAML.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Consulte a especificação YAML para obter um exemplo completo.
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 do ARM:
- Adicione uma matriz
volumesà seçãotemplateda definição do aplicativo de contêiner e defina um volume. Se você já tiver uma matrizvolumes, adicione um novo volume à matriz.- O
nameé um identificador para o volume. - Use
EmptyDircomo ostorageType.
- O
- Para cada contêiner no modelo que você deseja montar o volume, defina uma montagem de volume na matriz
volumeMountsda definição de contêiner.- O
volumeNamenome é definido na matrizvolumes. - É
mountPatho caminho no contêiner para montar o volume.
- O
Exemplo de trecho 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"
}
]
}
}
}
Confira a especificação da API de modelo do ARM para obter um exemplo completo.
Para criar um volume com escopo de réplica e montá-lo em um contêiner, implante uma nova revisão do aplicativo de contêiner usando o portal do Azure.
No portal do Azure, navegue até seu aplicativo de contêiner.
Selecione Gerenciamento de revisão no menu esquerdo.
Selecione Criar nova revisão.
Selecione o contêiner no qual você deseja montar o volume.
No painel Contexto Editar um contêiner, selecione a guia Montagens de volume.
Na seção Armazenamento efêmero, crie um novo volume com as informações a seguir.
- 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 Contexto.
Depois, selecione Criar para criar o grupo.
Volume dos Arquivos do Azure
Você pode montar um compartilhamento de arquivos pelos Arquivos do Azure como um volume em um contêiner.
O armazenamento dos Arquivos do Azure tem as seguintes características:
- Os arquivos gravados sob o local de montagem são persistidos no compartilhamento de arquivos.
- Os arquivos no compartilhamento estão disponíveis por meio do local de montagem.
- Vários contêineres podem montar o mesmo compartilhamento de arquivos, incluindo os que estão em outra réplica, revisão ou aplicativo de contêiner.
- Todos os contêineres que montam o compartilhamento podem acessar arquivos gravados por qualquer outro contêiner ou método.
- Mais de um volume de Arquivos do Azure pode ser montado em um único contêiner.
Os Arquivos do Azure dão suporte a protocolos SMB (Server Message Block) e NFS (Network File System). Você pode montar um compartilhamento de Arquivos do Azure usando qualquer um dos protocolos. O compartilhamento de arquivos que você define no ambiente deve ser configurado com o mesmo protocolo usado pelo compartilhamento de arquivos na conta de armazenamento.
Para habilitar o armazenamento de Arquivos do Azure em seu contêiner, você precisa configurar seu ambiente e aplicativo de contêiner da seguinte maneira:
- Crie uma definição de armazenamento no ambiente de Aplicativos de Contêiner.
- Se estiver usando o 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 Compartilhamentos de arquivos NFS nos Arquivos do Azure.
- Se o ambiente estiver configurado com uma VNet 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 dos Arquivos do Azure usada deve estar acessível na rede virtual do seu aplicativo de contêiner. Para obter mais informações, confira Permitir acesso em uma rede virtual.
- Se você estiver usando o NFS, também deverá desabilitar a transferência segura. Para obter mais informações, confira Compartilhamentos de arquivos NFS nos Arquivos do Azure.
Pré-requisitos
| Requisito | Instruções |
|---|---|
| Conta do Azure | Se você não tiver, crie uma conta gratuita. |
| Conta de Armazenamento do Azure | Criar uma conta de armazenamento. |
| Ambiente de Aplicativos de Contêiner do Azure | Crie um ambiente de aplicativos de contêiner. |
Configuração
Ao configurar um aplicativo de contêiner para montar um volume de Arquivos do Azure usando a CLI do Azure, você deve usar uma definição YAML para criar ou atualizar seu aplicativo de contêiner.
Para obter um tutorial passo a passo sobre como montar um compartilhamento de arquivos SMB, consulte Criar uma montagem de armazenamento de Arquivos do Azure nos Aplicativos de Contêiner do Azure.
Adicione uma definição de armazenamento em seu ambiente dos 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 pela chave de sua conta de armazenamento. Substitua<STORAGE_SHARE_NAME>pelo nome do compartilhamento de arquivos na conta de armazenamento.Os valores válidos para
--access-modesãoReadWriteeReadOnly.Para atualizar um aplicativo de contêiner existente para montar um compartilhamento de arquivo, exporte a especificação do 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 aplicativo de contêiner.
- Adicione uma matriz
volumesà seçãotemplateda definição do aplicativo de contêiner e defina um volume. Se você já tiver uma matrizvolumes, 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 que você definiu no ambiente. - A
mountOptionsé uma string separada por vírgulas de opções de montagem. Para obter mais informações, consulte Configurações de mountOptions no Azure Files. - A lista
secretsé uma lista de segredos a serem montados no volume. Para obter mais informações, consulte Montagem de segredos em um volume.
- O
- Para cada contêiner no modelo que você deseja montar o armazenamento de Arquivos do Azure, defina uma montagem de volume na matriz
volumeMountsà definição de contêiner.- O
volumeNamenome é definido na matrizvolumes. - É
mountPatho caminho no contêiner para montar o volume. - É
subPatho caminho no volume a ser montado. Se não for especificado, a raiz do volume será montada. Para obter mais informações, consulte (#sub-path).
- 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 matriz
Atualize seu aplicativo de contêiner usando o arquivo YAML.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Consulte a especificação YAML para obter um exemplo completo.
Os snippets do modelo do ARM a seguir demonstram como adicionar um compartilhamento de Arquivos do Azure a um ambiente de Aplicativos de Contêiner e usá-lo em um aplicativo de contêiner.
Adicione um recurso filho
storagesao ambiente de Aplicativos de Contêiner.{ "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 matriz
volumesà seçãotemplateda definição do aplicativo de contêiner e defina um volume. Se você já tiver uma matrizvolumes, 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 que você definiu no ambiente. - A
mountOptionsé uma string separada por vírgulas de opções de montagem. Para obter mais informações, consulte Configurações de mountOptions no Azure Files. - A lista
secretsé uma lista de segredos a serem montados no volume. Para obter mais informações, consulte Montagem de segredos em um volume.
- O
- Para cada contêiner no modelo que você deseja montar o armazenamento de Arquivos do Azure, defina uma montagem de volume na matriz
volumeMountsà definição de contêiner.- O
volumeNamenome é definido na matrizvolumes. - É
mountPatho caminho no contêiner para montar o volume. - O
subPath(opcional) é o caminho no volume a ser montado. Se não for especificado, a raiz do volume será montada. Para obter mais informações, consulte (#sub-path).
- O
- Adicione uma matriz
Confira a especificação da API de modelo do ARM para obter um exemplo completo.
Para configurar uma montagem de volume para o armazenamento de Arquivos do Azure no portal do Azure, adicione um compartilhamento de arquivos ao seu ambiente dos Aplicativos de Contêiner e adicione uma montagem de volume ao seu aplicativo de contêiner criando uma nova revisão.
No portal do Azure, navegue até a instância do Aplicativo de Contêiner.
No painel de navegação, em Configurações, selecione Arquivos do Azure.
Selecione Adicionar.
Selecione SMB (Server Message Block) ou NFS (Network File System), dependendo do protocolo usado pelo seu compartilhamento de arquivos.
No painel de contexto Adicionar compartilhamento de arquivos, 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 da conta de armazenamento.
- Compartilhamento de arquivo: o nome do compartilhamento de arquivo.
- Modo de acesso: o modo de acesso ao compartilhamento de arquivos. Valores válidos são Leitura/Gravação e Somente leitura.
Selecione Adicionar para sair do painel Contexto.
Selecione Salvar para confirmar as alterações.
Navegue até seu aplicativo de contêiner.
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, configure o seguinte.
- Tipo de volume: Volume de arquivo do Azure.
- Nome: insira um nome para o volume.
- Nome do compartilhamento de arquivos: selecione o compartilhamento de arquivos que você criou anteriormente.
- Opções de montagem: opcionalmente, insira uma cadeia de caracteres separada por vírgula das opções de montagem. Para obter mais informações, consulte Configurações de mountOptions no Azure Files.
Selecione Adicionar para sair do painel Contexto.
Na página Criar e implantar nova revisão, selecione a guia Contêiner.
Selecione o contêiner no qual você deseja montar o volume.
No painel Contexto Editar um contêiner, selecione a guia Montagens de volume.
Em Nome do volume, selecione o volume que você criou anteriormente.
Em Caminho de montagem, insira o caminho absoluto dentro do contêiner onde o volume será montado.
No ub-caminho (opcional), insira o caminho no volume a ser montado. Se não for especificado, a raiz do volume será montada. Para obter mais informações, consulte (#sub-path).
Selecione Salvar para salvar as alterações e sair do painel Contexto.
Depois, selecione Criar para criar o grupo.
Sub-caminho
Ao montar um compartilhamento de arquivos do Azure Files, além do caminho de montagem, você também pode especificar um subcaminho.
- Caminho de montagem: o caminho no contêiner em que você deseja montar o volume.
- Sub-caminho: o caminho no volume que você deseja montar.
O sub caminho é opcional. Se não for especificado, a raiz do volume será montada.
O sub-caminho é um caminho relativo da raiz do volume. O sub-caminho não deve começar com /. Especificar um sub-caminho que começa / pode impedir que seu aplicativo de contêiner seja iniciado. Por exemplo, my-volume-folder é um sub-caminho válido, enquanto /my-volume-folder não é.
O subcaminho pode se referir a uma pasta ou um arquivo no volume.
Se o sub caminho se referir a uma pasta, o caminho de montagem deverá se referir a uma pasta vazia no contêiner.
Se o sub caminho se referir a um arquivo, o caminho de montagem deverá se referir a um arquivo que ainda não existe no contêiner.
Por exemplo, suponha que o sub-caminho seja
my-volume-folder/my-volume-file.txte o caminho de montagem seja/my-container-folder/my-container-file. A pasta/my-container-folderjá deve existir no contêiner, mas ainda não deve conter o arquivomy-container-file.txt.
Todas as barras à direita do sub-caminho são ignoradas.