Docker daemon ออกโดยไม่คาดคิด

Dec 01 2020

นักเทียบท่าออกโดยไม่มีเหตุผลชัดเจนและฉันกำลังพยายามทำความเข้าใจว่าเกิดอะไรขึ้น

ตอนนี้ Docker daemon เป็นบริการที่โหลดแล้วไม่ได้ใช้งานพร้อมกับสถานะการออก 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)

เมื่อมองไปที่บันทึกนักเทียบท่าสิ่งนี้เกิดขึ้นเนื่องจากมันประมวลผลสัญญาณ 'ยุติ':

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

ไม่มีผู้ใช้ใดล็อกอินบนโฮสต์นั้นในขณะนั้นไม่มีผู้ใช้ยุติการเชื่อมต่อ Docker daemon อย่างชัดเจน

  • เหตุใดจึงเกิดขึ้นบันทึกใดที่สามารถให้เบาะแสได้
  • ฉันสามารถกำหนดค่า Dockerd ให้รีสตาร์ทโดยอัตโนมัติเมื่อออกได้หรือไม่?

นี่คือ Docker เวอร์ชัน 18.09.7 (build 2d0083d) บน Ubuntu 16.04.6 LTS บน x86-64

กำลังถามความสัมพันธ์กับ systemd บน Unix.stackexchange ที่นี่

คำตอบ

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

ณ จุดนี้ systemd ส่งนักเทียบท่าขอหยุด

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.

Systemd รายงานว่าการหยุดเสร็จสิ้นแล้ว 10 วินาทีน่าจะมาจากคอนเทนเนอร์ที่ไม่ได้จัดการกับdocker container stopคำสั่งอย่างสง่างามและถูกฆ่าหลังจาก 10 วินาทีจากนั้นอีกวินาทีเพื่อดำเนินการตามคำขอให้เสร็จสิ้น

ดังนั้นจากบันทึกที่ให้มา dockerd daemon ทำงานตามที่ร้องขอและคุณควรตรวจสอบสิ่งที่จะส่งsystemctl stop dockerคำสั่ง

ฉันสามารถกำหนดค่า Dockerd ให้รีสตาร์ทโดยอัตโนมัติเมื่อออกได้หรือไม่?

นักเทียบท่าไม่ได้ควบคุม systemd แต่ systemd ควบคุมนักเทียบท่าดังนั้นคุณต้องแก้ปัญหาจากฝั่ง systemd


ในกรณีเฉพาะนี้สิ่งที่บอกให้ systemd หยุดบริการนักเทียบท่าดูเหมือนจะเป็นบริการอัปเดตอัตโนมัติของ Ubuntu ที่ใช้การอัปเดตแพ็คเกจ containerd เวอร์ชัน Ubuntu

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

การแก้ไขที่ฉันแนะนำคือการติดตั้งนักเทียบท่าจากที่เก็บต้นน้ำ Docker ซึ่งดูเหมือนจะไม่มีปัญหานี้:

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