[FIX] ไม่สามารถเชื่อมต่อกับ Docker Daemon ที่ 'unix: ///var/run/docker.sock'

คำสั่งตามที่อธิบายไว้ด้านล่าง



บันทึก: วิธีนี้ใช้ได้กับผู้ใช้ที่ติดตั้ง Docker ด้วย APT package manager เท่านั้น หากคุณติดตั้ง Docker ผ่าน SNAP , เอ่ยถึง โซลูชันที่ 5 ด้านล่าง

  1. เปิด Terminal และดำเนินการคำสั่งแรก - เปิดโปงนักเทียบท่า .
sudo systemctl เปิดตัวนักเทียบท่า

หากเราพยายามเริ่มบริการนักเทียบท่าเมื่อนักเทียบท่าถูกมาสก์เราอาจพบข้อผิดพลาด'ไม่สามารถเริ่ม docker.service: หน่วยถูกมาสก์'Mask ถือได้ว่าเป็นเวอร์ชันปิดการใช้งานที่มีประสิทธิภาพมากขึ้น เมื่อไฟล์ยูนิตถูกมาสก์ยูนิตจะเชื่อมโยงกับ‘dev / null. ’คุณสามารถแสดงสถานะของไฟล์หน่วยทั้งหมดด้วยคำสั่ง -‘ $ systemctl list-unit-files '



2. เมื่อเทียบท่าแล้ว เปิดโปง เราทำได้ เริ่มนักเทียบท่า ภูต ด้วยคำสั่ง systemctl นักเทียบท่า ภูต จัดการวัตถุนักเทียบท่าเช่นรูปภาพคอนเทนเนอร์และคำขอ Docker API ดำเนินการคำสั่งด้านล่างในบรรทัดคำสั่ง



systemctl เริ่มนักเทียบท่า
เริ่มบริการ Docker

เริ่มบริการ Docker



3. ถึง ตรวจสอบ ไม่ว่าจะเป็นบริการนักเทียบท่า ใช้งานอยู่และทำงานอยู่ . เราจะใช้ไฟล์ สถานะ systemctl คำสั่งซึ่งแสดงสถานะปัจจุบันของบริการเฉพาะ ดำเนินการคำสั่งด้านล่างบน Terminal ของคุณ

นักเทียบท่าสถานะ systemctl
สถานะบริการ Docker

สถานะบริการ Docker

จากภาพด้านบนจะเห็นได้ว่า นักเทียบท่าทำงานอยู่และกำลังทำงานอยู่ .



โซลูชันที่ 2: ทำความสะอาด 'Failed Docker Pull' และเริ่มบริการ Docker

มีหลายกรณีที่คุณอาจปิด Docker โดยไม่คาดคิดขณะดึงคอนเทนเนอร์ สถานการณ์ดังกล่าวจะปิดบังไฟล์ docker.service และ นักเทียบท่า. ซ็อกเก็ต ไฟล์. Docker.socket คือไฟล์ที่อยู่ที่ ‘/var/run/docker.sock 'และใช้เพื่อสื่อสารกับ Docker daemon เราจะต้อง เปิดโปง ไฟล์สองหน่วย - docker .service และ docker.daemon ก่อนหน้านี้ กำลังดำเนินการ ถึง เริ่มนักเทียบท่า

  1. เปิดตัว เทอร์มินอล และดำเนินการ คำสั่ง ด้านล่าง:
systemctl unmask docker.service systemctl เปิดตัว docker.socket systemctl start docker.service
เริ่มบริการ Docker

เริ่มบริการ Docker

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

2. เปิด Terminal และดำเนินการตามคำสั่งด้านล่าง ตรวจสอบให้แน่ใจว่าคุณรู้จักไฟล์ รหัสผ่านรูท เนื่องจากเราจำเป็นต้องมีสิทธิ์ที่สูงขึ้นเพื่อดำเนินการคำสั่ง

sudo su service docker stop cd / var / run / docker / libcontainerd rm -rf containerd / * rm -f docker-containerd.pid service docker start
เริ่มบริการนักเทียบท่าใหม่

เริ่มบริการนักเทียบท่าใหม่

โซลูชันที่ 3: เริ่มบริการ Dockerd (Docker Daemon)

Dockerd เป็น Docker daemon ที่รับฟัง Docker API และจัดการอ็อบเจ็กต์ Docker ต่างๆ Dockerd สามารถใช้เป็นทางเลือกแทนคำสั่ง ‘ $ systemctl เริ่มนักเทียบท่า ซึ่งใช้เพื่อเริ่มต้น Docker daemon

  1. เปิด เทอร์มินอล และ เริ่มนักเทียบท่า โดยดำเนินการคำสั่งด้านล่าง:
sudo dockerd
เริ่ม Dockerd

เริ่ม Dockerd

โซลูชันที่ 4: เริ่ม Docker ด้วยคำสั่ง Service

หากคุณกำลังใช้ไฟล์ ระบบเริ่มต้น SysV คำสั่ง systemctl จะไม่ทำงานสำหรับคุณ เราจะต้องใช้ไฟล์ คำสั่งบริการ ถึง เริ่ม Docker daemon .

  1. เปิด Terminal และ ดำเนินการ คำสั่งด้านล่าง:
sudo service --status-all sudo service docker start
เริ่มบริการ Docker

เริ่มบริการ Docker

โซลูชันที่ 5: เริ่มบริการ Docker ด้วย Snap

หากคุณติดตั้ง Docker ด้วยไฟล์ ตัวจัดการแพ็คเกจ Snap คุณจะต้องใช้คำสั่ง snap เพื่อจัดการ Docker daemon

โดยทั่วไป Snap จะจัดการบริการโดยอัตโนมัติ อย่างไรก็ตามในสถานการณ์เช่นข้อผิดพลาดนี้จำเป็นต้องมีการแทรกแซงด้วยตนเอง อาร์กิวเมนต์บางส่วนที่คุณสามารถใช้กับคำสั่ง snap ได้แก่ stop, start, และ restart ในกรณีของเราเราจะใช้พารามิเตอร์ start

  1. เปิด Terminal และดำเนินการคำสั่งด้านล่างเพื่อ เริ่ม Docker .
sudo snap start นักเทียบท่า
เริ่ม Docker

เริ่ม Docker

2. ดำเนินการคำสั่งด้านล่างเพื่อ ตรวจสอบ ไม่ว่าจะเป็น เริ่มบริการ Docker แล้ว

บริการ sudo snap

นั่นจะ รายการ ทำงานทั้งหมด บริการสแน็ป .

บริการ Snap

บริการ Snap

หากคำสั่งข้างต้นไม่ได้ผลสำหรับคุณให้ลอง การเชื่อมต่อ Docker: ปลั๊กบ้าน เนื่องจากไม่ได้เชื่อมต่ออัตโนมัติโดยค่าเริ่มต้น เมื่อทำเสร็จแล้ว เริ่มต้น ที่ บริการ Docker .

3. เปิด Terminal และรันคำสั่งด้านล่าง:

sudo snap connect docker: home: home sudo snap start docker
เริ่ม Docker

เริ่ม Docker

โซลูชันที่ 6: เริ่ม Docker สำหรับผู้ใช้ที่ไม่มีรูท P คู่แข่ง

ข้อผิดพลาดอาจเกิดขึ้นเนื่องจาก ขาดสิทธิพิเศษที่สูงขึ้น และผู้ใช้ไม่สามารถเข้าถึง 'unix: ///var/run/docker.sock' โชคดีที่มีวิธีแก้ปัญหาชั่วคราว เราจะส่งออกตัวแปร Docker Host ไปยัง localhost ผ่านพอร์ต 2375

  1. เปิด Terminal และเรียกใช้คำสั่งด้านล่าง:
ส่งออก DOCKER_HOST = tcp: // localhost: 2375
ส่งออก DockerHost

ส่งออก Docker Host

โซลูชันที่ 7: ติดตั้ง Docker ใหม่

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

อ่าน 4 นาที