Docker: Container sigue reiniciando nuevamente

108

Hoy implementé una instancia de MediaWiki usando la imagen de la ventana acoplable appcontainers / mediawiki, y ahora tengo un nuevo problema para el que no puedo encontrar ninguna pista. Después de intentar adjuntarlo al contenedor frontal de mediawiki usando:

docker attach mediawiki_web_1

que responde Terminateden mi configuración por una razón que ignoro, intentando también:

docker exec -it mediawiki_web_1 bash

Recibo algo parecido a un mensaje de error:

Error response from daemon: Container 81c07e4a69519c785b12ce4512a8ec76a10231ecfb30522e714b0ae53a0c9c68 is restarting, wait until the container is running

Y ahí está mi nuevo problema, porque este contenedor nunca deja de reiniciarse. Puedo ver ese uso docker ps -aque siempre devuelve un ESTADO de Restarting (127) x seconds ago.

La cuestión es que puedo detener el contenedor (lo probé), pero volver a iniciarlo parece devolverlo a su ciclo de reinicio.

¿Alguna idea de cuál podría ser el problema aquí? Todo funcionaba correctamente hasta que traté de adjuntarlo ...

Estoy triste :-(

Balessan
fuente
Tuve éxito al eliminar completamente mi caché de Docker, usando forums.docker.com/t/how-to-delete-cache/5753/2 (también agregué la etiqueta -f a rmi). Luego reconstruí mis contenedores y funcionaron.
alberto56
Para mí no fue suficiente eliminar contenedores e imágenes (como se describe en el enlace de @ alberto56), también tuve que eliminar el volumen asociado. Una vez que hice eso, volví al negocio.
Katie Byers

Respuestas:

172

El docker logscomando le mostrará la salida que genera un contenedor cuando no lo ejecuta de forma interactiva. Es probable que esto incluya el mensaje de error.

docker logs --tail 50 --follow --timestamps mediawiki_web_1

También puede ejecutar un contenedor nuevo en primer plano con docker run -ti <your_wiki_image>para ver qué hace. Es posible que necesite mapear alguna configuración de su docker-composeyml aldocker comando.

Supongo que adjuntarse al proceso de media wiki provocó un bloqueo que corrompió algo en sus datos.

Mate
fuente
El resultado del comando que proporcionó, que supongo que está obteniendo los últimos 50 registros relacionados con el contenedor, es el siguiente:, 2016-05-26T16:38:27.362409489Z * Stopping web server apache2 * 2016-05-26T21:49:11.376549083Z Terminated 2016-05-26T21:49:11.688655642Z /bin/bash: /tmp/.runconfig.sh: No such file or directoryasí que tiene razón, hay algo dañado en los datos, ya que runconfig.sh parece haber desaparecido. Intentaré ejecutar el contenedor una vez más desde el primer plano como me aconsejó. Solo necesito encontrar cómo especificar los 25 argumentos adecuados ^^
Balessan
7
Gracias, ejecutar un contenedor nuevo hizo el trabajo. Se suponía que Docker facilitaría mi implementación, pero por ahora es un gran fracaso :-) Probablemente necesite aprender y probar más ...
Balessan
Me estaba tirando de los pelos tratando de que MySQL funcionara. docker ps -ame mostró que estaba atascado en un ciclo de arranque y su comando me mostró por qué: archivos que ya estaban en el directorio mysql que no podía eliminar. Me salvaste de horas más de tirarme de los pelos. ¡Gracias!
Blizzardengle
32

Cuando docker kill CONTAINER_IDno funciona y docker stop -t 1 CONTAINER_IDtampoco funciona, puede intentar eliminar el contenedor:

docker container rm CONTAINER_ID

Hoy tuve un problema similar en el que los contenedores estaban en un ciclo de reinicio continuo.

El problema en mi caso estaba relacionado con que yo era un pobre ingeniero.

De todos modos, solucioné el problema eliminando el contenedor, arreglando mi código y luego reconstruyendo y ejecutando el contenedor.

Espero que esto ayude a cualquiera que se haya quedado con este problema en el futuro

Giannis Katsini
fuente
4
Había puesto un código incorrecto en mi aplicación y en mi ventana acoplable, agregué el archivo de redacción, lo restart: alwaysque me dejó en un bucle de la ventana acoplable tratando de iniciar una aplicación rota ... :(
Giannis Katsini
4

Por experiencia personal, parece que hay un problema dentro de su contenedor docker que no permite que se reinicie. Entonces, algún proceso dentro del contenedor hace que el reinicio se cuelgue o algún proceso hace que el contenedor se bloquee al iniciar.

Cuando inicie el contenedor, asegúrese de iniciarlo separado "-d" si va a adjuntarlo. (p. ej., "Docker run -d mediawiki_web_1")

iam10k
fuente
Supongo que ejecutar el contenedor usando docker-compose lo separó de todos modos, ¿no? O falta el argumento -d en mi archivo de configuración. comprobará eso.
Balessan
4

tl; dr Se está reiniciando con un código de estado de 127, lo que significa que falta un archivo / biblioteca en su contenedor. Comenzar con un recipiente nuevo podría solucionarlo.

Explicación:

En lo que respecta a mi comprensión de Docker, esto es lo que está sucediendo:

  1. El contenedor intenta ponerse en marcha. En el proceso, intenta acceder a un archivo / biblioteca que no existe.
  2. Sale con un código de estado de 127, que se explica en esta respuesta .
  3. Normalmente, aquí es donde el contenedor debería haber salido por completo, pero se reinicia.
  4. Se reinicia porque la política de reinicio debe haberse configurado en algo diferente a no( el predeterminado ) (usando la marca de línea de comando --restarto la docker-compose.ymlclave restart) mientras se inicia el contenedor.

Solución: algo podría haber dañado su contenedor. Lo ideal es comenzar con un recipiente nuevo.

meshde
fuente
2

Este también podría ser el caso si ha creado un systemdservicio que tiene:

[Service]
Restart=always
ExecStart=/usr/bin/docker container start -a my_container
ExecStop=/usr/bin/docker container stop -t 2 my_container
Stephen
fuente
1

En mi caso, el contenedor nginx se seguía reiniciando, verifiqué los registros del contenedor nginx y supe que los archivos .crt y .key de un dominio no requerido tenían errores, por lo que eliminé el archivo .conf respectivo, .crt y .key y luego reinicié nginx. Eso es todo, nginx funciona bien sin reiniciar.

Lakshmi
fuente
0

Había olvidado que Minikube se ejecutaba en segundo plano y eso es lo que siempre los reiniciaba

nuicca
fuente
0

Intente agregar estos parámetros a su archivo yml de docker

restart: "no"
  restart: always
  restart: on-failure
  restart: unless-stopped
  environment:
    POSTGRES_DB: "db_name"
    POSTGRES_HOST_AUTH_METHOD: "trust"

El archivo final debería verse así

postgres:
  restart: "no"
  restart: always
  restart: on-failure
  restart: unless-stopped
  image: postgres:latest
  volumes:
    - /data/postgresql:/var/lib/postgresql
  ports:
    - "5432:5432"
  environment:
    POSTGRES_DB: "db_name"
    POSTGRES_HOST_AUTH_METHOD: "trust"
Phillip Kigenyi
fuente