ไม่สามารถเชื่อมต่อกับ Docker daemon ที่ unix: /var/run/docker.sock daemon ของนักวิ่งกำลังทำงานอยู่หรือไม่?


172

ฉันใช้ทุกวิธีที่มีในอินเทอร์เน็ต แต่ยังไม่สามารถเรียกใช้ Docker ได้

ฉันต้องการใช้ Scrapy Splash บนเซิร์ฟเวอร์ของฉัน

นี่คือhistoryคำสั่งที่ฉันใช้

docker run -p 8050:8050 scrapinghub/splash
sudo docker run -p 8050:8050 scrapinghub/splash
sudo usermod -aG docker $(whoami)
sudo docker run -p 8050:8050 scrapinghub/splash
newgrp docker
sudo docker run -p 8050:8050 scrapinghub/splash
reboot
sudo docker run -p 8050:8050 scrapinghub/splash
docker run -p 8050:8050 scrapinghub/splash

คุณสามารถเห็นฉันพยายามรีสตาร์ทเซิร์ฟเวอร์ของฉันเช่นกัน แต่มันก็ไม่ได้ช่วย

ดูผลลัพธ์ของ ps -aux | grep docker

root@mani:/var/www/html# ps aux | grep docker
root      8524  0.0  0.8 127904 13964 ?        Ssl  17:21   0:00 /usr/bin/dockerd --raw-logs
root      8534  0.0  0.3  90588  5012 ?        Ssl  17:21   0:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc
root      8543  0.0  0.0   8812   764 pts/1    S+   17:21   0:00 grep --color=auto docker
root     16356  0.0  0.0  17200   964 pts/1    S    17:14   0:00 newgrp docker
root     20080  0.0  0.0  17200   964 pts/1    S    17:06   0:00 newgrp docker
root     30221  0.0  0.0  17200   964 pts/1    S    17:09   0:00 newgrp docker

หากคุณเรียกใช้ ps aux | grep docker คุณเห็นกระบวนการ daemon ทำงานหรือไม่
Rome_Leader

สำเนาซ้ำที่เป็นไปได้: stackoverflow.com/questions/21871479/…
BMitch

@Rome_Leader ดูผลลัพธ์ในคำถามของฉัน ...
Umair Ayub

3
ลองนี้: sudo service
docker

2
คุณสามารถดูสถานะของนักเทียบท่า deamon ของคุณโดยใช้สิ่งนี้: sudo service docker statusตรวจสอบว่ามีการใช้งานอยู่หรือไม่
Haythem ROUIS

คำตอบ:


162

คุณสามารถลองสิ่งนี้:

systemctl start docker

มันทำงานได้ดีสำหรับฉัน

PS: หลังจากหากมีคำสั่งที่คุณไม่สามารถทำได้โดยไม่ต้อง sudo ลองสิ่งนี้:

gpasswd -a $USER docker

10
ใช้คำสั่งแรกฉันได้รับข้อผิดพลาด: Failed to start docker.service: Unit docker.service is masked.ดังนั้นฉันต้องเรียกใช้ต่อไปนี้: systemctl unmask docker.service systemctl unmask docker.socket systemctl start docker.service
Chris Phan

50

คุณสามารถรับข้อผิดพลาดนี้ได้ถ้านักเทียบท่าไม่ได้ปิดอย่างสมบูรณ์ คำตอบต่อไปนี้สำหรับแพ็คเกจ snap นักเทียบท่า

เรียกใช้snap logs dockerและค้นหาสิ่งต่อไปนี้:

Error starting daemon: pid file found, ensure docker is not running or delete /var/snap/docker/179/run/docker.pid

การลบไฟล์นั้นและการเริ่มต้น docker ใหม่นั้นใช้งานได้สำหรับฉัน

rm /var/snap/docker/<your-version-number>/run/docker.pid
snap stop docker
snap start docker

ให้แน่ใจว่าจะแทนที่ <your-version-number>‍ด้วยหมายเลขรุ่นที่เหมาะสม


ฉันจะป้องกันไม่ให้เกิดเหตุการณ์เช่นนี้ได้อย่างไร ทุกครั้งที่เปิดเครื่องพีซีฉันต้องลบ docker.pid!
Hamidreza

47

เพียงแค่เรียกใช้

sudo dockerd

dockerd เป็นบริการ daemon สำหรับคอนเทนเนอร์ docker เนื่องจากมันไม่ได้ทำงานในพื้นหลังเราไม่สามารถดำเนินการใด ๆ ที่เกี่ยวข้องกับบริการซึ่งจำเป็นต้องเริ่มต้นใหม่


10
นี่เป็นคำสั่งเดียวที่ใช้ได้สำหรับฉัน ฉันคิดว่ามันไร้สาระที่ต้องกระโดดผ่านห่วงจำนวนมากเพื่อให้นักเทียบท่าทำงาน
Homunculus Reticulli

3
มันทำให้ฉันผิดพลาดError starting daemon: Devices cgroup isn't mounted
Vineet 'DEVIN' Dev

@fepegar อาจเป็นไปได้ว่าคุณไม่ได้มีการติดตั้งอย่างถูกนักเทียบท่า
Yash Pokar

@YashPokar แน่นอนฉันลงเอยด้วยการติดตั้งใหม่และตอนนี้สิ่งต่าง ๆ ทำงานได้ตามที่คาดไว้ ขอบคุณ
fepegar

คำสั่งเดียวที่ทำงานกับฉันภายในคอนเทนเนอร์นักเทียบท่าเพื่อเริ่มคอนเทนเนอร์นักเทียบท่า ต้องการมันสำหรับ codebuild เพื่อสร้างสภาพแวดล้อมของตัวเองในขณะที่กำลังสร้าง :-)
เราคือ Borg

21

ก่อนอื่นให้ลองด้วยsudoเนื่องจากผู้ใช้ปัจจุบันอาจไม่มีสิทธิ์การเข้าถึงเพื่อสื่อสารกับ docker daemon เช่น/var/run/docker.sock

หากยังคงใช้งานไม่ได้หลังจากนั้นหลังจากการติดตั้งเพียงหยุดนักเทียบท่า daemon เป็น

$ sudo service docker stop

และรันคำสั่งต่อไปนี้เพื่อเริ่ม daemon ในเบื้องหลัง

$ sudo nohup docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

เพื่อให้การทำงานกับ Docker ง่ายขึ้นคุณควรเพิ่มชื่อผู้ใช้ของคุณในกลุ่มผู้ใช้ Docker การเพิ่มผู้ใช้ในกลุ่มสามารถทำได้ด้วยคำสั่งด้านล่าง

$ sudo usermod -aG docker $USER

นอกจากนี้ขั้นตอนนี้ถูกกล่าวถึงในเอกสารอย่างเป็นทางการของขั้นตอนหลังการติดตั้ง docker สำหรับ Linux ( https://docs.docker.com/engine/installation/linux/linux-postinstall/ )

Ubuntu 16.04 ผู้ใช้สามารถทำตามขั้นตอนเหล่านี้

ภายในไฟล์/lib/systemd/system/docker.serviceการเปลี่ยนแปลง: ExecStart = / usr / bin / dockerd fd: // พร้อม ExecStart = / usr / bin / dockerd -H tcp: //0.0.0.0: 2375

การเปลี่ยนแปลงภายในไฟล์/ etc / init.d/docker :

DOCKER_OPTS = พร้อม DOCKER_OPTS = "- H **** tcp: //0.0.0.0: 2375 "

จากนั้นรีสตาร์ทเครื่องของคุณ และเริ่มเล่นกับนักเทียบท่า


1
run sudo nohup docker daemon -H http://tcp://0.0.0.0:2375 () -H http://unix:///var/run/docker.sockให้bash: syntax error near unexpected token ('`
Umair Ayub

1
ฉันกำลังใช้งาน redhat linux
Umair Ayub

โอ้ ... ขอโทษ ปรับปรุงตัวอักษรพิเศษ () อัปเดตแล้ว RHEL รุ่นใด เพียงตรวจสอบค่าที่คุณได้รับด้วย $ DOCKER_HOST
mohan08p

$ sudo systemctl เปิดใช้งาน docker เพื่อเริ่มบริการ docker ในเวลาบูต
mohan08p

ฉันกำลังพยายามติดตั้ง Docker บน CentOS Linux release 7.3.1611 (Core)... แต่ตอนนี้ข้อผิดพลาดคือYour Linux kernel version 2.6.32-042stab116.2 is not supported for running docker. Please upgrade your kernel to 3.10.0 or newer.... ฉันสามารถอัพเดตเคอร์เนลโดยใช้yum update kernel... ???? คำถามคือมันจะลบทุกอย่างในเซิร์ฟเวอร์ของฉันหรือไม่ มันเป็นเซิร์ฟเวอร์ที่ใช้งานจริงพร้อมกับเว็บไซต์ที่กำลังทำงานอยู่ผมไม่ต้องการทำมันให้ยุ่ง
Umair Ayub

9

สิ่งนี้มักจะเกิดขึ้นถ้าคุณยังไม่หยุดนักเทียบท่า

เพื่อแก้ไข

service docker stop
cd /var/run/docker/libcontainerd
rm -rf containerd/*
rm -f docker-containerd.pid
service docker start

จากนั้น "นักเทียบท่าเรียกใช้ .... " เพื่อดาวน์โหลดภาพของคุณและเริ่มต้นคอนเทนเนอร์ตามปกติ


8

ฉันเพิ่งกดปุ่มนี้หลังจากทำการติดตั้ง DOCKER ใหม่จากเอกสารหลัก ปัญหาสำหรับฉันคือว่าทันทีหลังจากการติดตั้งบริการไม่ทำงาน

คำสั่งเหล่านี้จะช่วยให้คุณแน่ใจว่านักเทียบท่าพร้อมใช้งานแล้วเพื่อให้คำสั่ง run พบ

$ sudo service --status-all 
$ sudo service docker start
$ sudo service docker start

7

ฉันทำงานกับรูทและลองด้านล่างทำงานได้:

service docker start

export DOCKER_HOST="tcp://0.0.0.0:2375"

3
หากการทำงานกับโฮสต์ของคุณแสดงว่าคุณไม่มีรหัสผ่านรูท ทุกคนที่สามารถเข้าถึงพอร์ตนั้นสามารถเรียกใช้คำสั่งในฐานะรูทบนโฮสต์ของคุณ
BMitch

6

docker pull mongoฉันมีปัญหานี้หลังจากปิดนักเทียบท่าจะดึงภาชนะ ตอนแรกฉันได้รับข้อผิดพลาดแปลก ๆ ดังนั้นฉันจึงกำจัดนักเทียบท่าsudo apt-get purge docker.ioและติดตั้งใหม่sudo apt-get install docker.io... ทั้งหมดนี้ไม่ได้ทำอะไรเลย ฉันไม่สามารถวิ่งตู้คอนเทนเนอร์สวัสดีโลกได้ การแก้ไขที่ถูกต้องสำหรับฉันอย่างน้อยก็คือ:

systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service

หลังจากนี้ฉันสามารถดึง mongo และเรียกใช้สวัสดีโลก

ไชโย!


ฉันต้องทำกับ Sudo บน Ubuntu 18.04
Basanth


2

ใช้สิ่งนี้ใน ubuntu export DOCKER_HOST = tcp: // localhost: 2375


หากสิ่งนี้ใช้ได้กับระบบของคุณแสดงว่าคุณไม่มีรหัสผ่านรูท ทุกคนที่มีสิทธิ์เข้าถึงพอร์ตนั้นสามารถเรียกใช้คำสั่งในฐานะรูทบนโฮสต์
BMitch

2

ส่งออก DOCKER_HOST = tcp: // localhost: 2375 เหมาะสำหรับทุกคนที่ไม่มีสิทธิ์เข้าถึง sudo และผู้ใช้ไม่มีสิทธิ์เข้าถึง unix: ///var/run/docker.sock


สิ่งนี้มีประโยชน์สำหรับผู้ที่ไม่ได้เข้าถึงรูท แต่ต้องการรูทบนโฮสต์ของคุณ ทุกคนที่มีสิทธิ์เข้าถึงพอร์ตนั้นสามารถเรียกใช้คำสั่งในฐานะรูท
BMitch

@BMitch สนใจที่จะทำอย่างละเอียด?
Fran Marzoa

@FranMarzoa จากผู้ใช้รายอื่นที่คุณไม่เชื่อถือหรือแม้แต่โฮสต์อื่นคุณสามารถเรียกใช้docker runคำสั่งใด ๆกับผู้ใช้รูทภายในคอนเทนเนอร์ได้รับสิทธิพิเศษด้วยเนมสเปซโฮสต์บน pid และเครือข่ายและการติดตั้งระบบไฟล์รูท
BMitch

2

ฉันพยายามเรียกใช้นักเทียบท่า (เพิ่งติดตั้ง) ในอินสแตนซ์ของ AWS เมื่อมีข้อความปรากฏขึ้น ฉันแค่เขียนsudo service docker startและทำงานได้ดีสำหรับฉัน

ดูAWS ด้วย Docker ด้วย



2

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

การใช้คำสั่งด้านล่างควรแก้ไขปัญหา

sudo service docker start

ป้อนคำอธิบายรูปภาพที่นี่



1

ฉันมีปัญหาเดียวกันสำหรับ gitlab CI ที่ทำงานอยู่ที่โหนด: lts อิมเมจ:

  • ฉันเพิ่งรีสตาร์ท docker daemon และรีสตาร์ทคอนเทนเนอร์มันใช้งานได้สำหรับฉัน

1

สิ่งนี้ได้ผลกับฉันมันอาจใช้ได้กับคุณถ้าคุณใช้ Ubuntu 16 หรือ 18 (14 อาจใช้งานได้) ทดลองง่าย:

ไปที่ซอฟต์แวร์ Ubuntu พิมพ์ใน Docker ถอนการติดตั้งนักเทียบท่า (108 mb) หากติดตั้งไว้ล่วงหน้าแล้ว ติดตั้ง docker ตอนนี้รันคำสั่งและดูว่ามีข้อผิดพลาดเดียวกันเกิดขึ้นหรือไม่

ข้อผิดพลาด:

ป้อนคำอธิบายรูปภาพที่นี่

หลังจากทำตามขั้นตอนข้างต้น ป้อนคำอธิบายรูปภาพที่นี่

อย่างที่คุณเห็นมันทำงานได้ดี :)


1

ฉันประสบปัญหาเดียวกันบน Linux เมื่อฉันติดตั้ง docker โดยใช้ yum (yum install docker)

การแก้ไข: ดาวน์โหลดนักเทียบท่าไบนารีจากเว็บไซต์อย่างเป็นทางการ: การติดตั้งนักเทียบเรือ , แกะและทำตามขั้นตอนการติดตั้ง


1

ไม่มีคำตอบปัจจุบันที่ใช้ได้กับข้อผิดพลาดนี้ในเวอร์ชันของฉัน ฉันใช้ Ubuntu รุ่นเดสก์ท็อป 18. คำสั่งสองคำสั่งต่อไปนี้แก้ไขปัญหาได้

sudo snap connect docker:home :home

sudo snap start docker


0

สำหรับฉันทางออกคือเพื่อให้แน่ใจว่าฉันได้ติดตั้งแพ็คเกจ Docker ที่ถูกต้องแล้ว ตัวอย่างเช่นสำหรับ Ubuntu แพ็คเกจที่คิดค่าเสื่อมราคาคือ:

  • นักเทียบท่า
  • นักเทียบท่าเครื่องยนต์
  • docker.io
  • containerd
  • runc

สำหรับการตรวจสอบการติดตั้งhttps://docs.docker.com มีคำแนะนำสำหรับUbuntu , CentOS , DebianและFedoraในขณะที่เขียน


คุณพลาดขั้นตอนไปแล้วให้ทำตามลิงค์นี้เพื่อเซ็นสัญญาซื้อคืน medium.com/@sebagomez/…
Robert

@ Robert เหนือฉันอ้างถึง docs.docker อย่างเป็นทางการเพื่อรับคีย์ PGP วิธีนี้ปลอดภัยกว่าผู้ใช้ที่คัดลอกมาจากไซต์หรือสื่อนี้
RikH

ฉันลองขั้นตอนอูบุนตูและสิ่งเหล่านั้นไม่ทำงาน ต้องการขั้นตอนการลงนามและลิงค์ที่ฉันให้ไว้
Robert

@Robert ขอบคุณฉันได้ลบคำแนะนำที่ไม่สมบูรณ์และเพียงอ้างถึงเอกสารทางการ
RikH


0

อาจเกี่ยวข้องกับไม่มีพื้นที่ว่างบนฮาร์ดไดรฟ์ ตรวจสอบให้แน่ใจว่าคุณมีพื้นที่เหลือบนอุปกรณ์นักเทียบท่าไม่สามารถเริ่มต้นได้หากไม่มีที่ว่างเหลืออยู่


0

ใช้ docker start <your_container_name>

จากนั้นเชื่อมต่อกับฐานข้อมูลโดยใช้ mssql -u <yourUsername> -p <yourPassword>

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

หมายเหตุ: ฉันใช้ Mac เป็นระบบปฏิบัติการหลักของฉันและนี่อาจเป็นคำตอบเดียวกันสำหรับระบบปฏิบัติการที่ใช้ Unix ถ้าไม่! ขออภัยล่วงหน้า


0

ฉันยังได้รับข้อความแสดงข้อผิดพลาดด้านล่างหลังจากติดตั้ง docker และทำงาน: docker run hello-world

ไม่สามารถเชื่อมต่อกับ Docker daemon ที่ unix: /var/run/docker.sock daemon ของนักวิ่งกำลังทำงานอยู่หรือไม่?

นี่คือวิธีแก้ปัญหาสิ่งที่ได้ผลสำหรับฉัน สภาพแวดล้อม - Windows 10 (อย่าลืมเปิดใช้งานบน windows: การตั้งค่า> อัปเดตและความปลอดภัย> โหมดนักพัฒนาซอฟต์แวร์) - Ubuntu 18.04 LTS - Docker Desktop เวอร์ชั่น 2.3.0.2 (45183) - เปิดใช้งานใน Docker Desktop: เปิดเผยภูตบน tcp: // localhost: 2375 ไม่มี TLS - Docker Desktop จะต้องใช้งาน (เชื่อมต่อกับ Docker Hub ... เพียงเข้าสู่ระบบ)

หลังจากติดตั้งอูบุนตูให้อัพเดทที่เก็บ

sudo apt-get update

หากต้องการใช้ที่เก็บข้อมูลผ่าน HTTPS

sudo apt-get install \ apt-transport-https \ ca-certificate \ curl \ gnupg-agent \ คุณสมบัติของซอฟต์แวร์ทั่วไป

เพิ่มคีย์ Docker GPG อย่างเป็นทางการ:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

ตรวจสอบให้แน่ใจว่าคุณมีกุญแจด้วยลายนิ้วมือ

sudo apt-key fingerprint 0EBFCD88

อัพเดตที่เก็บ

sudo apt-get update

อัพเดตที่เก็บนักเทียบท่า

sudo add-apt-repository \ "deb [arch = amd64] https://download.docker.com/linux/ubuntu \ $ (lsb_release -cs) \ เสถียร"

อัพเดตที่เก็บอีกครั้ง

sudo apt-get update

คำสั่งเพื่อติดตั้งตัวเทียบท่าในเวอร์ชั่น: 5: 18.09.9 ~ 3-0 ~ ubuntu-bionic

sudo apt-get install docker-ce = 5: 18.09.9 ~ 3-0 ~ ubuntu-bionic docker-ce-cli = 5: 18.09.9 ~ 3-0 ~ ubuntu-bionic containerd.io

คำสั่งเพื่อตั้งค่า DOCKER_HOST

ส่งออก DOCKER_HOST = "tcp: //0.0.0.0: 2375"

หมายเหตุ: ใส่คำสั่งด้านบนในโปรไฟล์ของคุณเพื่อเริ่มต้นด้วย ubunto ex: echo "export DOCKER_HOST = 'tcp: //0.0.0.0: 2375'" >> ~ / .bashrc

เพิ่มผู้ใช้ไปยังกลุ่มนักเทียบท่า

sudo usermod -aG docker $ USER

รีสตาร์ทอูบุนตู

(ปิดและเปิดหน้าต่าง Ubuntu อีกครั้ง)

การทดสอบการติดตั้ง (อย่าใช้ sudo มากขึ้นก่อนที่คำสั่งนักเทียบท่า (จะทำให้เกิดข้อผิดพลาด) ผู้ใช้ "root" ได้รวมอยู่ในกลุ่มนักเทียบท่าแล้ว)

นักเทียบท่าวิ่งสวัสดีโลก

ข้อความด้านล่างควรจะแสดง

สวัสดีจากนักเทียบท่า! ข้อความนี้แสดงว่าการติดตั้งของคุณดูเหมือนจะทำงานอย่างถูกต้อง

หมายเหตุ: ถ้ามันล้มเหลวให้รันคำสั่งอีกครั้ง: export DOCKER_HOST = "tcp: //0.0.0.0: 2375"

ส่งออก DOCKER_HOST = "tcp: //0.0.0.0: 2375"

การอ้างอิง: https://docs.docker.com/engine/install/ubuntu/ เซสชัน: INSTALL DOCKER ENGINE

สำหรับนักเทียบท่ารุ่นอื่น ๆ ที่สามารถติดตั้งได้กับอูบุนตูให้ดูที่เก็บโดยใช้คำสั่งด้านล่าง:

apt-cache madison docker-ce

จากนั้นติดตั้งตัวเทียบท่ารุ่นที่ต้องการ:

sudo apt-get install docker-ce = docker-ce-cli = containerd.io


0

สำหรับทุกคนที่มีปัญหากับ Docker ในเวลาที่ทำการติดตั้ง

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

$ sudo apt update

$ sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

$ sudo apt update

$ apt-cache policy docker-ce

$ sudo apt install docker-ce

-1

ปัญหานี้สามารถแก้ไขได้อย่างถาวรโดยการเรียกใช้ 1. systemctl เปิดใช้งานนักเทียบท่า 2. เริ่มบริการนักเทียบท่า


ดูเหมือนว่าฉันจะต้องเริ่มบริการนักเทียบท่าservice start dockerทุกครั้งที่ฉันรีคอมพิวเตอร์
ปราณกุมารซาร์การ์

@PranKumarSarkar ไม่ได้ถ้าคุณเรียกใช้ "sudo systemctl enable docker"
4329
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.