Ejercicio: control del comportamiento de reinicio

La facilidad y rapidez con que se implementan contenedores en Azure Container Instances la convierten en la opción perfecta para la ejecución de tareas que se ejecutan una única vez, como la representación de imágenes o la compilación y prueba de aplicaciones.

Con una directiva de reinicio configurable, puede especificar que los contenedores se detengan cuando sus procesos se hayan completado. Dado que las instancias de contenedor se facturan por segundo, solo se le cobra por los recursos de proceso usados mientras el contenedor que ejecuta su tarea está en funcionamiento.

¿Qué son las directivas de reinicio de contenedores?

Azure Container Instances presenta tres opciones de directiva de reinicio:

Directiva de reinicio Descripción
Siempre Los contenedores del grupo de contenedores siempre se reinician. Esta directiva tiene sentido para tareas de ejecución prolongada, como un servidor web. Este es el valor de configuración predeterminado aplicado cuando no se especifica ninguna directiva de reinicio durante la creación del contenedor.
Nunca Nunca se reinician los contenedores del grupo de contenedores. Los contenedores se ejecutan solo una vez.
OnFailure Los contenedores del grupo de contenedores se reinician solo cuando se produce un error en el proceso ejecutado en el contenedor (cuando se cierra con un código de salida distinto de cero). Los contenedores se ejecutan al menos una vez. Esta directiva funciona bien con contenedores que ejecutan tareas de duración breve.

Ejecución de un contenedor hasta completarse

Para ver la directiva de reinicio en acción, cree una instancia de contenedor a partir de la imagen de Docker microsoft/aci-wordcount y especifique la directiva de reinicio OnFailure. Este contenedor ejecuta un script de Python que analiza el texto de la obra Hamlet de Shakespeare, escribe las 10 palabras más comunes en una salida estándar y después se cierra.

  1. Ejecute este comando az container create para iniciar el contenedor.

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

    Azure Container Instances inicia el contenedor y luego lo detiene cuando su proceso (un script, en este caso) se cierra. Cuando Azure Container Instances detiene un contenedor cuya directiva de reinicio es Nunca u OnFailure, el estado del contenedor se establece en Terminado.

  2. Ejecute az container show para comprobar el estado del contenedor.

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

    Repita el comando hasta que el estado sea Finalizado.

  3. Consulte los registros del contenedor para examinar la salida. Para ello, ejecute az container logs de este modo.

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

    Verá esto.

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