ปัญหากับนักเทียบท่า


32

ฉันพยายามเรียนรู้เกี่ยวกับ "นักเทียบท่า" ใน Ubuntu 15.04

เมื่อฉันให้คำสั่งใด ๆ ที่ใช้นักเทียบท่าเช่น "ภาพรันนักเทียบท่า" มันได้รับข้อผิดพลาดต่อไปนี้:

FATA[0000] Post http:///var/run/docker.sock/v1.17/containers/create: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?

ฉันไม่เข้าใจความหมายของมัน


5
sudo service docker startผมได้รับข้อผิดพลาดนี้และจากนั้นก็เริ่มภูตด้วย จากนั้นฉันก็สามารถวิ่งsudo docker run hello-worldได้ โชคดี.
shellter

คำตอบ:


31

มีสาเหตุสองประการที่ทำให้คุณได้รับข้อผิดพลาดนี้:

  1. Docker daemon ไม่ทำงาน sudo /etc/init.d/docker statusคุณสามารถตรวจสอบว่ามีการ

  2. หางภูตกำลังทำงานอยู่ /var/run/docker.sockแต่ไม่ได้มีการกำหนดค่าเพื่อฟังบน คุณสามารถตรวจสอบใน/etc/default/dockerถ้ามีตัวเลือกที่ระบุไว้ใน-HDOCKER_OPTS


3
+1 ฉันต้องใช้$ sudo service docker statusตั้งแต่ฉันได้รับ$ sudo /etc/init.d/docker status * Docker is managed via upstart, try using service docker status
IsaacS

หลังจากทำงานsudo /etc/init.d/docker statusฉันรู้ว่าบริการนักเทียบท่าไม่ทำงาน ฉันวิ่งsudo /etc/init.d/docker startแล้วฉันก็สามารถเรียกใช้ภาพนักเทียบท่าของฉันได้
Halil

ดูเหมือนว่า / etc / default / docker ไม่มีประโยชน์อีกต่อไปใน systemd (Ubuntu 16.04+) BTW บน systemd บัญญัติsudo systemctl status dockerวิธีการตรวจสอบสถานะภูตจะเป็น
Pablo A

38

หลังจากติดตั้ง Docker คุณจะได้รับแจ้งให้เพิ่มผู้ใช้ของคุณในกลุ่มนักเทียบท่า เพียงเรียกใช้คำสั่งที่แสดง:

sudo usermod -aG docker $USER

คุณจะต้องปิดเซสชันและลงชื่อเข้าใช้อีกครั้งเพื่อให้การเปลี่ยนแปลงมีผล


อาจจะง่ายที่สุด ฉันไม่รู้ว่ามันใช้งานได้หรือไม่ (ใช้ @ หลอกลวงของ) ตอบ
Yair Daon

ฉันไม่ได้รับพรอมต์นี้ ฉันอยู่ที่ Raspberry Pi
IgorGanapolsky

sudo usermod -a -G docker <user>เพื่อเพิ่มตัวเองไปยังกลุ่มนักเทียบท่าในภายหลังเรียก ดูที่นี่สำหรับข้อมูลเพิ่มเติม
Hugh W

3
เน้นที่ "ปิดเซสชั่นของคุณ" - ขอบคุณ!
Dolan Antenucci

บน Ubuntu 18.04 กับ Gnome ฉันต้องรีสตาร์ทระบบเพื่อให้ทำงานได้ เพียงออกจากระบบและกลับเข้าใช้งานไม่ได้: /
Zoltán

15

ลองรีบูตระบบปฏิบัติการของคุณหลังจากติดตั้งนักเทียบท่าเพื่อใช้สิทธิ์กลุ่มหากผู้ใช้ของคุณเข้าร่วมกลุ่มนักเทียบท่า ..

ปรับปรุง:

เมื่อ Docker ติดตั้งบน Ubuntu 14.04 ตัวติดตั้งจะแนะนำสิ่งที่ผู้ใช้ของคุณเพิ่มไปยังกลุ่มนักเทียบท่าเพื่อเข้าถึงบริการนักเทียบท่า

ดูที่

นักเทียบท่า daemon ผูกกับซ็อกเก็ต Unix แทนพอร์ต TCP โดยค่าเริ่มต้นแล้วซ็อกเก็ต Unix จะเป็นเจ้าของโดยผู้ใช้รูทและผู้ใช้รายอื่นสามารถเข้าถึงได้ด้วย sudo ด้วยเหตุผลนี้ docker daemon จะรันในฐานะผู้ใช้รูทเสมอ เพื่อหลีกเลี่ยงการใช้ sudo เมื่อคุณใช้คำสั่ง docker ให้สร้างกลุ่ม Unix ชื่อนักเทียบท่าและเพิ่มผู้ใช้ เมื่อนักเทียบท่า daemon เริ่มต้นมันทำให้เจ้าของซ็อกเก็ต Unix อ่าน / เขียนได้โดยกลุ่มนักเทียบท่า

แหล่งที่มา: https://docs.docker.com/installation/ubuntulinux/#create-a-docker-group


2
คุณควรอธิบายว่าทำไมสิ่งนี้ถึงช่วยได้
guntbert

1
@guntbert ฉันได้อัปเดตคำตอบแล้ว ..
MURATSPLAT

@MURATSPLAT, qbi, gunbert ขอบคุณฉันค้นหาวิธีแก้ปัญหา
rishi kant

เพื่อให้ผลการเปลี่ยนแปลงการอนุญาตกลุ่ม คุณไม่จำเป็นต้องรีบูต ออกจากระบบก็เพียงพอแล้ว
Tim Wu

@TimWu บน Ubuntu 18.04 กับ Gnome ฉันต้องรีสตาร์ทระบบ - เพียงแค่ออกจากระบบและกลับเข้าใช้งานไม่ได้: /
Zoltán

10

ลองใช้sudo docker imagesเพื่อตรวจสอบว่ามีภาชนะที่เรียกว่า<image>ในโฮสต์ของคุณ

การทำงานdocker run <image>จะเริ่มภาชนะที่เรียกว่า<image>ในโฮสต์คอมพิวเตอร์ของคุณถ้าโฮสต์คอมพิวเตอร์ของคุณไม่ได้มีตู้คอนเทนเนอร์นี้แล้วนักเทียบท่าดึงอัตโนมัติจะภาชนะที่ชื่อ '' docker pull <image>จากศูนย์กลางการเก็บข้อมูลเช่นเดียวกับวิธีการที่คุณทำงาน ถ้าหากยังไม่พบภาพที่เรียกว่า '' มันจะแสดงข้อความผิดพลาดนี้

คุณสามารถลองแทนที่เพื่อhello-worldดูว่านักเทียบท่าทำงานบนคอมพิวเตอร์ของคุณหรือไม่

sudo docker run hello-world

sudoนอกจากนี้คุณควรตรวจสอบว่าคุณควรใช้


2
หากปัญหาคือว่า OP ไม่ได้ใช้ sudo ข้อความแสดงข้อผิดพลาดจะเป็น "สิทธิ์ถูกปฏิเสธ" แทนที่จะเป็น "ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว"
Andreas Veithen

1
ใช่คุณพูดถูก ฉันลองแล้วถ้าผู้ใช้ไม่ได้รับอนุญาตข้อความแสดงข้อผิดพลาดจะเป็น:FATA[0000] Get http:///var/run/docker.sock/v1.18/containers/json: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
realhu

2
พยายามให้สิทธิ์sudo usermod -a -G docker ec2-user
AB

4

ฉันพบบทความนี้มีประโยชน์: https://docs.docker.com/articles/systemd/ ; ฉันวิ่งบนหลาย ๆ สภาพแวดล้อมและทำงานได้หวังว่ามันจะช่วยคุณได้เช่นกัน


คำตอบสำหรับลิงค์เท่านั้นไม่ถือว่ายอมรับได้ โปรดระบุคำตอบของคุณให้สมบูรณ์
Flimzy

2
ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนที่สำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
มิทช์

1
ลิงก์ systemd นั้นดูเหมือนว่าจะตาย นี่คือลิงค์อื่นdocs.docker.com/engine/admin/systemd
wsams

2

ฉันได้รับข้อความที่คล้ายกันขณะพยายามดึงภาพ ฉันเพิ่งทำsudo suและสามารถดึงภาพได้สำเร็จ


2
ยินดีต้อนรับสู่ถาม Ubuntu! ฉันขอแนะนำให้แก้ไขคำตอบนี้เพื่อขยายด้วยรายละเอียดเฉพาะเกี่ยวกับวิธีการทำเช่นนี้ (ดูเพิ่มเติมฉันจะเขียนคำตอบที่ดีได้อย่างไรสำหรับคำแนะนำทั่วไปเกี่ยวกับคำตอบประเภทใดที่ถือว่ามีค่ามากที่สุดใน Ask Ubuntu) โปรดทราบว่าการใช้ Docker ในฐานะผู้ใช้ระดับสูงนั้นได้แนะนำมาหลายครั้งแล้ว
David Foerster

ฉันได้ทางออกของปัญหาแล้ว
rishi kant
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.