Docker demon nieoczekiwanie kończy pracę

Dec 01 2020

Docker wyszedł bez wyraźnego powodu i próbuję zrozumieć, co się stało.

W tej chwili demon dockera jest usługą załadowaną, nieaktywną ze statusem wyjścia 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)

Patrząc na dzienniki dockera, stało się tak, ponieważ przetworzył sygnał `` zakończony '':

$ 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.

Żaden użytkownik nie był wtedy zalogowany na tym hoście, żaden użytkownik nie wyłączył wprost demona Dockera.

  • Dlaczego tak się dzieje, jakie dzienniki mogą dostarczyć wskazówek?
  • Czy mogę skonfigurować dockerd, aby automatycznie uruchamiał się ponownie po zamknięciu?

To jest Docker w wersji 18.09.7 (kompilacja 2d0083d) na Ubuntu 16.04.6 LTS na x86-64.

Relacja z systemd jest pytana tutaj na Unix.stackexchange

Odpowiedzi

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...

W tym momencie systemd wysłał dockerowi żądanie zatrzymania.

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 odebrał to żądanie zatrzymania i pomyślnie kończy pracę.

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

Systemd zgłasza teraz zakończenie zatrzymania. 10 sekund prawdopodobnie pochodzi z kontenerów, które nie wykonały wdzięcznie docker container stoppolecenia i zostały zabite po 10 sekundach, a następnie kolejna sekunda na zakończenie przetwarzania żądania.

Tak więc z dostarczonych dzienników demon dockerd działa zgodnie z żądaniem i powinieneś sprawdzić, co wysłałoby systemctl stop dockerpolecenie.

Czy mogę skonfigurować dockerd, aby automatycznie uruchamiał się ponownie po zamknięciu?

dockerd nie kontroluje systemd, systemd kontroluje dockerd, więc musisz rozwiązać problem od strony systemowej.


W tym konkretnym przypadku rzeczą, która nakazuje systemowi zatrzymanie usługi docker, wydaje się być usługa nienadzorowanej aktualizacji Ubuntu, która aktualizuje wersję pakietu containerd dla Ubuntu.

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

Moją zalecaną poprawką byłoby zainstalowanie Dockera z repozytoriów Docker, które wydają się nie mieć tego problemu:

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