il daemon docker viene chiuso in modo imprevisto

Dec 01 2020

Docker è uscito senza una ragione apparente e sto cercando di capire cosa sia successo.

In questo momento il daemon docker è un servizio caricato, inattivo con uno stato di uscita 0 SUCCESS.

$ systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Tue 2020-12-01 06:25:16 UTC;
     Docs: https://docs.docker.com
 Main PID: 2218 (code=exited, status=0/SUCCESS)

Guardando i log del docker, questo è accaduto perché ha elaborato il segnale 'terminato':

$ journalctl -u docker.service | tail -25
Nov 30 18:30:21 ip-10-38-4-210 dockerd[2218]: time="2020-11-30T18:30:21.728694550Z" <redacted irrelevant>
Dec 01 06:25:05 ip-10-38-4-210 systemd[1]: Stopping Docker Application Container Engine...
Dec 01 06:25:05 ip-10-38-4-210 dockerd[2218]: time="2020-12-01T06:25:05.867748396Z" level=info msg="Processing signal 'terminated'"
Dec 01 06:25:16 ip-10-38-4-210 systemd[1]: Stopped Docker Application Container Engine.

Nessun utente era connesso a quell'host in quel momento, nessun utente ha terminato esplicitamente il daemon docker.

  • Perché sta accadendo, quali registri potrebbero fornire un indizio?
  • Posso configurare dockerd in modo che si riavvii automaticamente all'uscita?

Questa è la versione Docker 18.09.7 (build 2d0083d) su Ubuntu 16.04.6 LTS su x86-64.

La relazione con systemd viene richiesta su Unix.stackexchange qui

Risposte

2 BMitch Dec 01 2020 at 20:17
Dec 01 06:25:05 ip-10-38-4-210 systemd[1]: Stopping Docker Application Container Engine...

A questo punto, systemd ha inviato a Docker una richiesta di arresto.

Dec 01 06:25:05 ip-10-38-4-210 dockerd[2218]: time="2020-12-01T06:25:05.867748396Z" level=info msg="Processing signal 'terminated'"

Docker ha ricevuto la richiesta di arresto ed è uscito correttamente.

Dec 01 06:25:16 ip-10-38-4-210 systemd[1]: Stopped Docker Application Container Engine.

Systemd ora segnala che l'arresto è terminato. I 10 secondi sono probabilmente da contenitori che non hanno gestito correttamente il docker container stopcomando e sono stati interrotti dopo 10 secondi, quindi un altro secondo per completare l'elaborazione della richiesta.

Quindi dai log forniti, il demone dockerd funziona come richiesto e dovresti controllare cosa avrebbe inviato un systemctl stop dockercomando.

Posso configurare dockerd in modo che si riavvii automaticamente all'uscita?

dockerd non controlla systemd, systemd controlla dockerd, quindi dovresti risolvere il problema dal lato systemd.


In questo caso specifico, la cosa che dice a systemd di interrompere il servizio docker sembra essere il servizio di aggiornamento automatico di Ubuntu che applica gli aggiornamenti della versione Ubuntu del pacchetto containerd.

https://bugs.launchpad.net/ubuntu/+source/containerd/+bug/1870514

La mia soluzione consigliata sarebbe installare docker dai repository Docker a monte che non sembrano avere questo problema:

https://docs.docker.com/engine/install/ubuntu/