แก้ไข: ไม่สามารถเชื่อมต่อกับ Docker Daemon



ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา

คุณอาจสับสนมากหากเทอร์มินัล Linux ส่งข้อผิดพลาด“ ไม่สามารถเชื่อมต่อกับ Docker daemon” มาที่คุณเพราะมีแนวโน้มว่า Docker daemon กำลังทำงานอยู่แล้วเมื่อคุณเห็น แม้ว่าคุณจะต้องการให้แน่ใจว่าเป็นเช่นนั้น แต่คุณอาจจะงงงวยเมื่อพบว่าข้อผิดพลาดนี้ไม่ได้เกี่ยวข้องกับการที่บริการไม่เริ่มทำงาน ส่วนใหญ่จะถูกส่งไปที่ผู้ใช้ที่ไม่ได้เพิ่มตัวเองในกลุ่ม Docker



Docker ออกกลุ่มผู้ใช้แยกต่างหากในระบบ Linux และผู้ที่มีบัญชีผู้ใช้ที่ไม่ได้เพิ่มเข้าไปจะไม่สามารถเชื่อมต่อได้ โปรดทราบว่าการเพิ่มบัญชีผู้ใช้ในกลุ่ม Docker นั้นเทียบเท่ากับการทำงานของรูทเนื่องจาก daemon จะทำงานในฐานะผู้ใช้รูทเสมอ สิ่งนี้อาจคาดได้ในระบบเซิร์ฟเวอร์ Ubuntu ผู้ใช้คนเดียว แต่แน่นอนว่าจะเป็นสิ่งที่ควรคำนึงถึงสำหรับผู้ที่ใช้ Docker บน Arch, Fedora หรือ Debian



วิธีที่ 1: การตรวจสอบสถานะบริการ Docker

แม้ว่าจะเกือบจะแน่นอน แต่คุณจะต้องตรวจสอบว่าบริการ Docker กำลังทำงานอยู่หรือไม่ ที่หน้าต่างเทอร์มินัลให้เรียกใช้ systemctl สถานะ docker.service ในฐานะผู้ใช้ปกติ คุณควรได้รับข้อมูลบางอย่างเกี่ยวกับหมายเลข PID ของ Docker ที่ได้รับมอบหมาย หากคุณไม่ทำเช่นนั้นคุณจะต้องเริ่มบริการใหม่



หากคุณเริ่มต้นใหม่แล้วให้ลองทำทุกวิถีทางที่ทำให้คุณเกิดข้อผิดพลาด“ ไม่สามารถเชื่อมต่อกับ Docker daemon” หากตอนนี้ใช้งานได้แสดงว่าคุณไม่ได้ให้บริการและไม่จำเป็นต้องกังวลเกี่ยวกับสิ่งอื่นใดนอกจากเหตุผลที่บริการไม่ทำงาน น่าเสียดายที่การดำเนินการนี้ไม่ได้ผลในกรณีส่วนใหญ่ดังนั้นคุณจะต้องดำเนินการต่อในสถานการณ์เหล่านั้น

วิธีที่ 2: การเพิ่มผู้ใช้ใน Docker Group

วิ่ง ข้อมูลนักเทียบท่า จากบรรทัดคำสั่งซึ่งโดยปกติจะให้ข้อผิดพลาด“ ไม่สามารถเชื่อมต่อกับ Docker daemon” ได้อีกครั้ง

หากเป็นกรณีนี้คุณจะต้องเรียกใช้ sudo groupadd นักเทียบท่า; sudo usermod -aG นักเทียบท่า $ USER เพื่อเพิ่มตัวเองในกลุ่มที่เหมาะสม หากสิ่งนี้ให้ข้อผิดพลาดเนื่องจากคุณไม่มี usermod คุณสามารถแก้ไขคำสั่งเพื่อเรียกใช้เป็น sudo groupadd นักเทียบท่า; sudo gpasswd -a $ USER นักเทียบท่า แต่โดยทั่วไปแล้วสิ่งนี้ไม่ควรเป็นปัญหาเนื่องจากลินุกซ์ระดับเชิงพาณิชย์ส่วนใหญ่ใช้งานได้กับชุดเครื่องมือเดียวกัน ไม่ว่าในกรณีใดให้เรียกใช้ นักเทียบท่า newgrp เพื่อให้คุณสามารถเข้าสู่กลุ่มนักเทียบท่าใหม่ได้หากคุณยังไม่ได้อยู่



โปรดทราบว่าสิ่งนี้จะเพิ่มผู้ใช้ที่คุณลงชื่อเข้าใช้อยู่เสมอซึ่งไม่น่าจะเป็นปัญหามากเกินไปในระบบของคนส่วนใหญ่ที่ไม่มีบัญชีหลายบัญชีนอกเหนือจากผู้ใช้รายเดียวและบัญชีรูท เนื่องจากคุณได้ป้อนการเข้าถึงระดับผู้ดูแลระบบในขณะนี้ให้รัน sudo chgrp นักเทียบท่า / usr / bin นักเทียบท่า; sudo chgrp นักเทียบท่า /var/run/docker.sock เพื่อแก้ไขสิทธิ์บนซ็อกเก็ตนักเทียบท่าและคำสั่ง โดยปกติไฟล์ซ็อกเก็ตเป็นของผู้ใช้รูทเท่านั้นดังนั้นสิ่งนี้จะแก้ไขได้

หลังจากเรียกใช้งานแล้วคุณไม่ควรมีปัญหาใด ๆ เพราะตอนนี้อยู่ในกลุ่มเดียวกับที่คุณสร้างไว้ในคำสั่งก่อนหน้านี้ คุณจะต้องทดสอบเพื่อให้แน่ใจว่านักเทียบท่าทำงานโดยไม่มี sudo ให้พิมพ์ นักเทียบท่าวิ่งสวัสดีชาวโลก ในฐานะผู้ใช้ทั่วไปเพื่อให้แน่ใจว่าคุณจะไม่ได้รับข้อผิดพลาดอื่น ๆ

ณ จุดนี้มีผู้ใช้น้อยรายที่ยังคงได้รับข้อความแสดงข้อผิดพลาดใด ๆ ในตอนนี้สิ่งต่างๆส่วนใหญ่ควรได้รับการแก้ไข แต่หากคุณยังคงประสบปัญหาคุณอาจต้องออกจากระบบโดยสมบูรณ์ ลองเปิดหน้าต่างโปรแกรมจำลองเทอร์มินัลอื่น แต่หากไม่ได้ผลในบางครั้งอาจช่วยให้ระบบหยุดทำงานเพื่อเริ่มการทำงานใหม่ทั้งหมดหากเป็นไปได้

วิธีที่ 3: การใช้ ACL เพื่อแก้ไขข้อมูลเมตาของ Docker

หากคุณไม่ต้องการอยู่ในกลุ่มที่ทำให้คุณเป็นเหมือนผู้ใช้รูทคุณสามารถตั้งค่าไฟล์ซ็อกเก็ตให้ทำงานโดยใช้สิทธิ์บางอย่างเท่านั้น คุณสามารถเพิกเฉยต่อกระบวนการ gpasswd ได้หากคุณต้องการดำเนินการด้วยวิธีนี้ ต้องสแกนระบบไฟล์เพื่อหารายการ ACL ที่แตกต่างกันซึ่งเป็นภาระสำหรับผู้ที่ทำการตรวจสอบความปลอดภัย แต่จะป้องกันไม่ให้คุณต้องใช้กลุ่มนักเทียบท่าทั้งหมด

หากคุณต้องการทำด้วยวิธีนี้คุณสามารถเรียกใช้ sudo setfacl -m ผู้ใช้: ชื่อ: rw /var/run/docker.sock ในขณะที่แทนที่ผู้ใช้และชื่อด้วยป้ายกำกับที่เหมาะสม สิ่งนี้ให้สิทธิ์ในการเข้าถึงซ็อกเก็ต Docker ที่ /var/run/docker.sock ซึ่งควรทำงานกับเซิร์ฟเวอร์ Debian และ Ubuntu

อ่าน 3 นาที