Esercizio - Controllare il comportamento di riavvio

Completato

La semplicità e la velocità della distribuzione di contenitori in Istanze di Azure Container lo rendono particolarmente adatto per le attività che vengono eseguite una sola volta, come il rendering di immagini o la compilazione e il test di applicazioni.

Con i criteri di riavvio configurabili, è possibile specificare che i contenitori vengano arrestati al completamento dei processi. Poiché le istanze del contenitore vengono fatturate al secondo, vengono addebitate solo le risorse di calcolo usate mentre il contenitore che esegue l'attività è in esecuzione.

Cosa sono i criteri di riavvio del contenitore?

Istanze di Azure Container ha tre opzioni per i criteri di riavvio:

Criterio di riavvio Descrizione
Sempre I contenitori nel gruppo di contenitori vengono sempre riavviati. Questo criterio ha senso per le attività con esecuzione prolungata, ad esempio un server Web. Questa è l'impostazione predefinita applicata quando non si specificano i criteri di riavvio al momento della creazione del contenitore.
Mai I contenitori nel gruppo di contenitori non vengono mai riavviati. I contenitori vengono eseguiti una sola volta.
In caso di esito negativo I contenitori nel gruppo di contenitori vengono riavviati solo quando il processo eseguito nel contenitore ha esito negativo, ovvero quando termina con un codice di uscita diverso da zero. I contenitori vengono eseguiti almeno una volta. Questo criterio funziona per i contenitori che eseguono attività di breve durata.

Eseguire un contenitore fino al completamento

Per vedere i criteri di riavvio in azione, creare un'istanza di contenitore dall'immagine Docker azuredocs/aci-wordcount e specificare il criterio di riavvio OnFailure. Questo contenitore esegue uno script Python che analizza il testo dell'Amleto di Shakespeare, scrive le 10 parole più comuni nell'output standard e quindi esce.

  1. Eseguire il comando az container create per avviare il contenitore:

    az container create \
      --resource-group learn-deploy-aci-rg \
      --name mycontainer-restart-demo \
      --image mcr.microsoft.com/azuredocs/aci-wordcount:latest \
      --restart-policy OnFailure \
      --location eastus
    

    Istanze di Azure Container avvia il contenitore e quindi lo arresta quando il relativo processo, in questo caso uno script, esce. Quando Istanze di Azure Container arresta un contenitore i cui criteri di riavvio sono Never o OnFailure, lo stato del contenitore è impostato su Terminato.

  2. Eseguire az container show per controllare lo stato del contenitore:

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name mycontainer-restart-demo \
      --query "containers[0].instanceView.currentState.state"
    

    Ripetere il comando finché non raggiunge lo stato Terminato.

  3. Eseguire az container logs per visualizzare i log del contenitore per esaminare l'output:

    az container logs \
      --resource-group learn-deploy-aci-rg \
      --name mycontainer-restart-demo
    

    Si otterrà questo output:

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