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 reinício configurável, pode especificar que os contentores deverão ser parados quando os processos são concluídos. Uma vez que as instâncias de contentor são faturadas ao segundo, são cobrados apenas os recursos de computação utilizados enquanto o contentor executa a tarefa.

Os exemplos apresentados neste artigo utilizam a CLI do Azure. Tem de ter a versão 2.0.21 ou superior da CLI do Azure instalada localmente ou utilizar a CLI no Azure Cloud Shell.

Política de reinício do contentor

Quando cria um grupo de contentores no Azure Container Instances, pode especificar uma das três definições de política de reinício.

Política de reinício Descrição
Always Os contentores no grupo de contentores são sempre reiniciados. Esta é a predefinição aplicada quando não é especificada nenhuma política de reinício durante a criação do contentor.
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 grupo de contentores estiver configurado com um endereço IP, esse endereço IP pode ser alterado quando o grupo de contentores for reiniciado.

Especificar uma política de reinício

A forma como especifica uma política de reinício depende da forma como cria as instâncias de contentor, como com a CLI do Azure, Azure PowerShell cmdlets ou no portal do Azure. Na CLI do Azure, especifique o --restart-policy parâmetro quando chamar az container create.

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

Exemplo de execução para conclusão

Para ver a política de reinício em ação, crie uma instância de contentor a partir da imagem microsoft aci-wordcount e especifique a OnFailure política de reinício. Este contentor de exemplo executa um script python que, por predefinição, analisa o texto de Shakespeare's Hamlet, escreve as 10 palavras mais comuns para STDOUT e, em seguida, sai.

Execute o contentor 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 Azure Container Instances para um contentor cuja política de reinício é Never ou OnFailure, o estado do contentor está definido como Terminado. Pode verificar o estado de um contentor 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"

Assim que o estado do contentor de exemplo mostrar Terminado, pode ver a saída da tarefa ao ver os registos de contentor. Execute o comando az container logs para ver a saída do script:

az container logs --resource-group myResourceGroup --name mycontainer

Resultado:

[('the', 990),
 ('and', 702),
 ('of', 628),
 ('to', 610),
 ('I', 544),
 ('you', 495),
 ('a', 453),
 ('my', 441),
 ('in', 399),
 ('HAMLET', 386)]

Este exemplo mostra o resultado que o script enviou para STDOUT. No entanto, as suas tarefas em contentores podem, em vez disso, escrever o resultado no armazenamento persistente para obter mais tarde. Por exemplo, para uma partilha de ficheiros do Azure.

Passos seguintes

Os cenários baseados em tarefas, como o processamento em lote de um conjunto de dados grande com vários contentores, podem tirar partido de variáveis de ambiente personalizadas ou linhas de comandos no runtime.

Para obter detalhes sobre como manter a saída dos contentores que são executados até à conclusão, veja Montagem de uma partilha de ficheiros do Azure com Azure Container Instances.