Executar tarefas em contentores com políticas de reinício
A facilidade e velocidade de implementação de contentores no Azure Container Instances oferece uma plataforma atraente para realizar tarefas de execução única, como a compilação, teste e composição de imagem numa instância de contentor.
Com uma política de reinicialização configurável, você pode especificar que seus contêineres sejam interrompidos quando os processos forem concluídos. Como o Azure cobra instâncias de contêiner por segundo, você só é cobrado pelos recursos de computação usados enquanto o contêiner que executa sua tarefa está em execução.
Os exemplos apresentados neste artigo usam a CLI do Azure. Você deve 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
Ao criar um grupo de contêineres em 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 reinício | Description |
---|---|
Always |
Os contentores no grupo de contentores são sempre 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 contentores no grupo de contentores nunca são reiniciados. Os contentores são executados, no máximo, uma vez. |
OnFailure |
Os contentores no grupo de contentores são reiniciados apenas quando o processo executado no contentor falha (quando termina com um código de saída diferente de zero). Os contentores são executados, pelo menos, uma vez. |
Nota
Se o seu 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
Como você especifica 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 --restart-policy
parâmetro quando você chamar az container create.
az container create \
--resource-group myResourceGroup \
--name mycontainer \
--image mycontainerimage \
--restart-policy OnFailure
Exemplo de execução até a conclusão
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 política de OnFailure
reinicialização. Este contêiner de exemplo executa um script Python que, por padrão, analisa o texto de Hamlet de Shakespeare, escreve 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
O Azure Container Instances inicia o contentor e, em seguida, para-o quando a sua aplicação (ou script, neste caso) é fechada. 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 com o comando az container show :
az container show \
--resource-group myResourceGroup \
--name mycontainer \
--query containers[0].instanceView.currentState.state
Saída de exemplo:
"Terminated"
Assim que o estado do contentor de exemplo mostrar Terminado, pode ver a saída da tarefa ao ver os registos do contentor. Execute o comando de registos de contentor az para ver 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. Suas tarefas em contêineres, no entanto, podem, em vez disso, gravar sua saída no armazenamento persistente para recuperação posterior. Por exemplo, para um compartilhamento de arquivos do Azure.
Próximos passos
Cenários baseados em tarefas, como o processamento em lote de um grande conjunto de dados com vários contêineres, podem tirar proveito de variáveis de ambiente personalizadas ou linhas de comando em tempo de execução.
Para obter detalhes sobre como manter a saída de seus contêineres que são executados até a conclusão, consulte Montando um compartilhamento de arquivos do Azure com instâncias de contêiner do Azure.