Docker: il contenitore continua a riavviarsi di nuovo


108

Oggi ho distribuito un'istanza di MediaWiki utilizzando l'immagine docker appcontainers / mediawiki e ora ho un nuovo problema per il quale non riesco a trovare alcun indizio. Dopo aver tentato di collegarsi al contenitore anteriore di mediawiki utilizzando:

docker attach mediawiki_web_1

che risponde Terminatedsulla mia configurazione per un motivo che ignoro, provando anche:

docker exec -it mediawiki_web_1 bash

Ottengo qualcosa di simile a un messaggio di errore:

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

E c'è il mio nuovo problema, perché questo contenitore non smette mai di riavviarsi. Posso vedere quello using docker ps -ache restituisce sempre uno STATUS di Restarting (127) x seconds ago.

Il fatto è che sono in grado di fermare il contenitore (ho testato) ma riavviarlo sembra riportarlo nel suo ciclo di riavvio.

Qualche idea su quale potrebbe essere il problema qui? L'intera cosa funzionava correttamente finché non ho provato a collegarmi ...

Sono triste :-(


Ho avuto successo cancellando completamente la mia intera cache Docker, utilizzando forums.docker.com/t/how-to-delete-cache/5753/2 (ho anche aggiunto il tag -f a rmi). Poi ho ricostruito i miei container e hanno funzionato.
alberto56

Per me non era sufficiente eliminare contenitori e immagini (come descritto nel link di @ alberto56), ho dovuto anche eliminare il volume associato. Dopo averlo fatto, sono tornato in affari.
Katie Byers

Risposte:


172

Il docker logscomando ti mostrerà l'output che un contenitore sta generando quando non lo esegui in modo interattivo. È probabile che questo includa il messaggio di errore.

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

Puoi anche eseguire un nuovo contenitore in primo piano con docker run -ti <your_wiki_image>per vedere cosa fa. Potrebbe essere necessario mappare alcune configurazioni dal tuo docker-composeyml al dockercomando.

Immagino che il collegamento al processo wiki multimediale abbia causato un arresto anomalo che ha danneggiato qualcosa nei tuoi dati.


Il risultato del comando che hai fornito e che immagino stia ottenendo gli ultimi 50 log relativi al contenitore è il seguente 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 directory:, quindi hai ragione, c'è qualcosa di danneggiato nei dati poiché runconfig.sh sembra essere scomparso. Proverò a eseguire di nuovo il contenitore in primo piano come consigliato. Ho solo bisogno di trovare come specificare i 25 argomenti corretti ^^
Balessan

7
Grazie, eseguire un nuovo container ha funzionato. Docker avrebbe dovuto facilitare la mia distribuzione ma per ora è un grosso fallimento :-) Probabilmente ho bisogno di imparare e provare di più ...
Balessan

Mi stavo strappando i capelli cercando di far funzionare MySQL. docker ps -ami ha mostrato che era bloccato in un ciclo di avvio e il tuo comando mi ha mostrato il motivo: file già nella directory mysql che non poteva eliminare. Mi hai salvato da ore in più a strapparmi i capelli. Grazie!
Blizzardengle

32

Quando docker kill CONTAINER_IDnon funziona e docker stop -t 1 CONTAINER_IDanche non funziona, puoi provare a eliminare il contenitore:

docker container rm CONTAINER_ID

Oggi ho avuto un problema simile in cui i contenitori erano in un ciclo di riavvio continuo.

Il problema nel mio caso era legato al fatto che ero un povero ingegnere.

Ad ogni modo, ho risolto il problema eliminando il contenitore, correggendo il mio codice, quindi ricostruendo ed eseguendo il contenitore.

Spero che questo aiuti chiunque sia bloccato con questo problema in futuro


4
Avevo inserito un codice errato nella mia applicazione e nel mio file di composizione docker ho aggiunto restart: alwaysche mi ha lasciato in un ciclo di finestra mobile cercando di avviare un'app non funzionante .. :(
Giannis Katsini

4

Dall'esperienza personale sembra che ci sia un problema all'interno del container docker che non ne consente il riavvio. Quindi alcuni processi all'interno del contenitore causano il blocco del riavvio o alcuni processi causano l'arresto anomalo del contenitore all'avvio.

Quando avvii il contenitore assicurati di avviarlo disconnesso "-d" se intendi collegarti ad esso. (es. "docker run -d mediawiki_web_1")


Presumo che l'esecuzione del container usando docker-compose lo abbia scollegato comunque, no? O l'argomento -d manca nel mio file di configurazione. lo controllerà.
Balessan

4

tl; dr Si sta riavviando con un codice di stato di 127, il che significa che c'è un file / libreria mancante nel tuo contenitore. L'avvio di un nuovo contenitore potrebbe risolverlo.

Spiegazione:

Per quanto riguarda la mia comprensione di Docker, questo è ciò che sta accadendo:

  1. Il contenitore tenta di avviarsi. Durante il processo, tenta di accedere a un file / libreria che non esiste.
  2. Esce con un codice di stato di 127, che è spiegato in questa risposta .
  3. Normalmente, è qui che il contenitore dovrebbe essere completamente chiuso, ma si riavvia.
  4. Si riavvia perché il criterio di riavvio deve essere stato impostato su un valore diverso da no( predefinito ) (utilizzando il flag della riga di comando --restarto la docker-compose.ymlchiave restart) durante l'avvio del contenitore.

Soluzione: qualcosa potrebbe aver danneggiato il tuo contenitore. L'avvio di un nuovo contenitore dovrebbe idealmente fare il lavoro.


2

Questo potrebbe anche essere il caso se hai creato un systemdservizio che ha:

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

1

Nel mio caso il contenitore nginx continuava a riavviarsi, ho controllato i log del contenitore nginx e sono venuto a sapere che i file .crt e .key di un dominio non richiesto hanno errori, quindi ho rimosso i rispettivi file .conf, .crt e .key e quindi ho riavviato nginx. Ecco che nginx funziona bene senza riavviare.


0

Avevo dimenticato Minikube in esecuzione in background e questo è ciò che li ha sempre riavviati



0

Prova ad aggiungere questi parametri al file yml della finestra mobile

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

Il file finale dovrebbe essere simile a questo

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"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.