buruh pelabuhan tiba-tiba keluar

Dec 01 2020

Docker keluar tanpa alasan yang jelas dan saya mencoba memahami apa yang terjadi.

Sekarang daemon buruh pelabuhan adalah layanan yang dimuat, tidak aktif dengan status keluar 0 SUKSES.

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

Melihat log buruh pelabuhan, ini terjadi karena sinyal diproses 'dihentikan':

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

Tidak ada pengguna yang masuk ke host tersebut pada saat itu, tidak ada pengguna yang secara eksplisit menghentikan daemon buruh pelabuhan.

  • Mengapa ini terjadi, log apa yang bisa memberikan petunjuk?
  • Dapatkah saya mengkonfigurasi dockerd untuk memulai ulang secara otomatis saat keluar?

Ini adalah versi Docker 18.09.7 (build 2d0083d) di Ubuntu 16.04.6 LTS di x86-64.

Hubungan dengan systemd sedang ditanyakan di Unix.stackexchange di sini

Jawaban

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

Pada titik ini, systemd mengirim permintaan berhenti buruh pelabuhan.

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 menerima permintaan berhenti itu dan keluar dengan anggun.

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

Systemd sekarang melaporkan penghentian telah selesai. 10 detik kemungkinan dari kontainer yang tidak menangani docker container stopperintah dengan baik dan mati setelah 10 detik, kemudian satu detik lagi untuk menyelesaikan pemrosesan permintaan.

Jadi dari log yang disediakan, daemon dockerd berfungsi seperti yang diminta dan Anda harus memeriksa apa yang akan mengirim systemctl stop dockerperintah.

Dapatkah saya mengkonfigurasi dockerd untuk memulai ulang secara otomatis saat keluar?

dockerd tidak mengontrol systemd, systemd mengontrol dockerd, jadi Anda harus menyelesaikan masalah dari sisi systemd.


Dalam kasus khusus ini, hal yang memberitahu systemd untuk menghentikan layanan buruh pelabuhan tampaknya menjadi layanan pembaruan tanpa pengawasan Ubuntu yang menerapkan pembaruan versi Ubuntu dari paket containerd.

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

Perbaikan yang saya rekomendasikan adalah menginstal buruh pelabuhan dari repositori Docker hulu yang tampaknya tidak memiliki masalah ini:

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