bash - start - docker status container




¿Cómo detectar si Docker Run tuvo éxito programáticamente? (2)

Estoy escribiendo un guión bash muy simple para verificar rápidamente que mi contenedor aún se construya y comience correctamente y que la aplicación en el interior responda a las solicitudes.

A veces, la docker run falla, por ejemplo, porque el puerto al que intento vincular el contenedor ya está asignado. Pero cuando esto sucede, el código de salida de docker run sigue siendo 0, por lo que no puedo usar el código de salida. ¿Cómo puedo verificar programáticamente que el contenedor se inició correctamente?

Las soluciones que estoy considerando son:

  • analizar el resultado de errores
  • docker ps para ver si el contenedor se está ejecutando

pero estos dos parecen un poco exagerados y feos. ¿Me está perdiendo una mejor manera de verificar si la docker run ?


Para evitar analizar nada, puede usar la parte superior de la ventana acoplable , que devuelve 1 si el contenedor no se está ejecutando:

id=$(docker run mycontainer)
if ! docker top $id &>/dev/null
then
    echo "Container crashed unexpectedly..."
    return 1
fi

Podríamos usar docker exec $id true 2>/dev/null || echo not running docker exec $id true 2>/dev/null || echo not running .

Este comando no escribe en stdout, como lo hace "docker top". Escribe en stderr cuando el contenedor no se está ejecutando, el mismo mensaje que "docker top".





docker