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.
A facilidade e a velocidade da implantação de contêineres em Instâncias de Contêiner do Azure fornece uma plataforma atraente para executar tarefas executadas uma vez, como compilação, teste e renderização de imagem em uma instância de contêiner.
Com uma política de reinicialização configurável, você pode especificar que os contêineres são interrompidos quando seus processos são concluídos. Como o Azure cobra pelas instâncias de contêiner por segundo, você só paga pelos recursos computacionais usados enquanto o contêiner que executa sua tarefa estiver em execução.
Os exemplos apresentados neste artigo usam o CLI do Azure. Você deve ter CLI do Azure versão 2.0.21 ou superior instalado localmente ou usar a CLI no Azure Cloud Shell.
Política de reinicialização do contêiner
Ao criar um grupo de contêineres no Instâncias de Contêiner do Azure, você pode especificar uma das três configurações de política de reinicialização.
| Política de reinicialização | Description |
|---|---|
Always |
Os contêineres no grupo de contêineres sempre são reiniciados. Essa política é a configuração padrão aplicada quando nenhuma política de reinicialização é especificada na criação do contêiner. |
Never |
Os contêineres no grupo de contêineres nunca são reiniciados quando o processo do contêiner é encerrado com êxito (código de saída 0). Se o contêiner for encerrado com um código de saída diferente de zero, o contêiner ainda poderá ser reiniciado pela plataforma. Para obter mais informações, consulte O comportamento de reinicialização com códigos de saída não zero. |
OnFailure |
Os contêineres no grupo de contêineres são reiniciados somente quando o processo executado no contêiner falha (quando ele termina com um código de saída diferente de zero). Os contêineres são executados pelo menos uma vez. |
Observação
Se o grupo de contêineres estiver configurado com um endereço IP, esse endereço IP poderá ser alterado quando o grupo de contêineres for reiniciado.
Especificar uma política de reinicialização
A forma como você especifica uma política de reinicialização depende de como você cria suas instâncias de contêiner, como com os cmdlets CLI do Azure, Azure PowerShell ou no portal Azure. No CLI do Azure, especifique o --restart-policy parâmetro ao chamar az container create.
az container create \
--resource-group myResourceGroup \
--name mycontainer \
--image mycontainerimage \
--restart-policy OnFailure
Exemplo de execução até o fim
Para ver a política de reinicialização em ação, crie uma instância de contêiner a partir da imagem Microsoft aci-wordcount e especifique a OnFailure política de reinicialização. Este contêiner de exemplo executa um script Python que, por padrão, analisa o texto de Hamlet de Shakespeare, grava as 10 palavras mais comuns em STDOUT e, em seguida, sai.
Execute o contêiner de exemplo com o seguinte comando az container create :
az container create \
--resource-group myResourceGroup \
--name mycontainer \
--image mcr.microsoft.com/azuredocs/aci-wordcount:latest \
--restart-policy OnFailure
Instâncias de Contêiner do Azure inicia o contêiner e o interrompe quando seu aplicativo (ou script, nesse caso) é encerrado. Quando Instâncias de Contêiner do Azure interrompe um contêiner cuja política de reinicialização é Never ou OnFailureo status do contêiner é definido como Encerrado. Você pode verificar o status de um contêiner com o comando az container show :
az container show \
--resource-group myResourceGroup \
--name mycontainer \
--query containers[0].instanceView.currentState.state
Exemplo de saída:
"Terminated"
Depois que o status do contêiner de exemplo aparecer como Terminado, você poderá ver a saída da tarefa visualizando os logs do contêiner. Execute o comando az container logs para exibir a saída do script:
az container logs --resource-group myResourceGroup --name mycontainer
Saída:
[('the', 990),
('and', 702),
('of', 628),
('to', 610),
('I', 544),
('you', 495),
('a', 453),
('my', 441),
('in', 399),
('HAMLET', 386)]
Este exemplo mostra a saída que o script enviou para STDOUT. No entanto, suas tarefas em contêineres podem, em vez disso, gravar sua saída no armazenamento persistente para recuperação posterior. Por exemplo, para um compartilhamento de arquivos do Azure.
Comportamento de reinicialização com códigos de saída diferentes de zero
Quando um contêiner é encerrado com um código de saída diferente de zero, ele indica um erro ou uma falha. Nesse cenário, a plataforma ainda pode reiniciar o contêiner independentemente da configuração da política de reinicialização. Esse comportamento se aplica mesmo quando a política de reinicialização é definida como Never.
A Never política de reinicialização garante apenas que um contêiner não seja reiniciado quando ele for encerrado com êxito com um código de saída zero (desligamento normal). Se o contêiner for encerrado com um código de saída diferente de zero, a plataforma poderá reiniciar o contêiner para tentar a recuperação.
Se você precisar garantir que um contêiner seja executado apenas uma vez, independentemente do código de saída, considere as seguintes abordagens:
- Projete seu aplicativo de contêiner para lidar com erros internamente e sair com um código de saída zero.
- Monitore o código de saída do contêiner usando o comando az container show e execute a ação apropriada com base no resultado.
Próximas Etapas
Cenários baseados em tarefas, como o processamento em lote de um conjunto de dados grande com vários contêineres, podem aproveitar variáveis de ambiente personalizadas ou linhas de comando em runtime.
Para obter detalhes sobre como persistir a saída dos seus contêineres que são executados até serem concluídos, consulte Como montar um compartilhamento de arquivos do Azure com o Instâncias de Contêiner do Azure.