Executar tarefas em contêineres com políticas de reinício

A facilidade e a velocidade de implantação de contêineres nas Instâncias de Contêiner do Azure fornece uma plataforma atraente para executar tarefas de execução única 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 devem ser interrompidos quando os processos são concluídos. Como a cobrança das instâncias de contêiner é feita por segundo, você só paga pelos recursos de computação usados durante a execução do contêiner que realiza a tarefa.

Os exemplos apresentados neste artigo usam a CLI do Azure. Você precisa ter a CLI do Azure versão 2.0.21 ou superior instalada localmente ou usar a CLI no Azure Cloud Shell.

Política de reinicialização de contêiner

Quando cria um grupo de contêineres nas Instâncias de Contêiner do Azure, você pode especificar uma entre três configurações de política de reinicialização.

Política de reinicialização Descrição
Always Os contêineres no grupo de contêineres sempre são reiniciados. Essa é 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. Os contêineres são executados no máximo uma vez.
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 seu grupo de contêineres estiver configurado com um endereço IP, esse endereço pode ser alterado quando o grupo de contêineres for reiniciado.

Especificar uma política de reinicialização

Como especificar uma política de reinicialização depende de como você cria suas instâncias de contêiner, como com a CLI do Azure, cmdlets do Azure PowerShell, ou no portal do Azure. Na CLI do Azure, especifique o parâmetro --restart-policy ao chamar az container create.

az container create \
    --resource-group myResourceGroup \
    --name mycontainer \
    --image mycontainerimage \
    --restart-policy OnFailure

Executar o exemplo de conclusão

Para ver a política de reinicialização em ação, crie uma instância de contêiner com base na imagem aci-wordcount da Microsoft e especifique a política de reinicialização OnFailure. Este contêiner de exemplo executa um script de Python que, por padrão, analisa o texto de Shakespeare Hamlet, 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

As Instâncias de Contêiner do Azure iniciam o contêiner e, em seguida, o interrompem quando seu aplicativo (ou script, neste caso) é encerrado. Quando as Instâncias de Contêiner do Azure param um contêiner cuja política de reinicialização é Never ou OnFailure, o status do contêiner é definido como Encerrado. Você pode verificar o status de um contêiner usando o comando az container show:

az container show \
    --resource-group myResourceGroup \
    --name mycontainer \
    --query containers[0].instanceView.currentState.state

Saída de exemplo:

"Terminated"

Depois que o status do contêiner de exemplo mostrar Encerrado, você pode ver a saída da tarefa ao exibir os logs do contêiner. Execute o comando az container logs comando 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 envia para STDOUT. As tarefas em contêineres, no entanto, podem escrever a saída para o armazenamento persistente para recuperação posterior. Por exemplo, para um compartilhamento de arquivos do Azure.

Próximas etapas

Os cenários baseados em tarefas, como o processamento em lotes de um conjunto de dados grande com vários contêineres, podem aproveitar variáveis de ambiente personalizadas ou linhas de comando no runtime.

Para obter detalhes sobre como persistir a saída de seus contêineres que são executados até a conclusão, consulte Montar um compartilhamento de arquivos do Azure com Instâncias de Contêiner do Azure.