2016-06-30 34 views
27

Ho un contenitore finestra mobile in esecuzione in un host di 1G RAM (ci sono anche altri contenitori in esecuzione nello stesso host). L'applicazione in questo contenitore mobile decodificherà alcune immagini, che potrebbero consumare molta memoria.Come sapere il motivo per cui un contenitore docker viene chiuso?

Di tanto in tanto, questo container uscirà. Dubito che sia dovuto a memoria insufficiente, ma non molto sicuro. Ho bisogno di un metodo per trovare la causa principale. Quindi c'è comunque da sapere cos'è successo per la morte di questo container?

+1

È possibile controllare i registri per tale contenitore tramite 'registri docker . – techtabu

+0

ma il container è uscito, credo che non riesca più a registrarlo? –

+0

Ho appena provato sulla mia macchina. Puoi ancora accedere ai log anche quando il container è uscito. –

risposta

46

Altri hanno menzionato docker logs $container_id per visualizzare l'output dell'applicazione. Questa sarebbe sempre la mia prima cosa da controllare.

Successivamente, è possibile eseguire un docker inspect $container_id per visualizzare i dettagli sullo stato, ad esempio:

"State": { 
     "Status": "exited", 
     "Running": false, 
     "Paused": false, 
     "Restarting": false, 
     "OOMKilled": false, 
     "Dead": false, 
     "Pid": 0, 
     "ExitCode": 2, 
     "Error": "", 
     "StartedAt": "2016-06-28T21:26:53.477229071Z", 
     "FinishedAt": "2016-06-28T21:26:53.478066987Z" 
    }, 

La linea importante che ci sia "OOMKilled", che sarà vero se si superano i limiti di memoria contenitore e Docker uccide il vostro app. Potresti anche voler cercare il codice di uscita per vedere se identifica una causa per l'uscita dalla tua app.

+1

Non capisco da quando il mio contenitore è sparito, come funzionerà il "controllo"? Dalla discussione sopra, quando l'app muore, anche il contenitore morirà. Intendi riavviare la stessa immagine, quindi ispezionare? –

+2

@LiBin un contenitore non si asciuga quando muore, passa semplicemente a uno stato di arresto come stato = arrestato o chiuso. 'docker ps -a' e vedi tu stesso –

+0

@ SamuelToh grazie. ora è chiaro. –