ข้อผิดพลาดนักเทียบท่า: /var/run/docker.sock: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว


86

ฉันยังใหม่กับนักเทียบท่า ฉันมีเชลล์สคริปต์ที่โหลดข้อมูลลงในอิมพาลาและฉันต้องการไฟล์นักเทียบท่าที่รันบิวด์อิมเมจและรันคอนเทนเนอร์ ฉันใช้ Mac ติดตั้ง boot2docker และDOCKER_HOSTตั้งค่า env แล้ว

bash-3.2$ docker info
Containers: 0
Images: 0
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Dirs: 0
Execution Driver: native-0.2
Kernel Version: 3.15.3-tinycore64
Debug mode (server): true
Debug mode (client): false
Fds: 10
Goroutines: 10
EventsListeners: 0
Init Path: /usr/local/bin/docker
Sockets: [unix:///var/run/docker.sock tcp://0.0.0.0:2375]

ฉันกำลังพยายามติดตั้งอิมเมจที่สร้างไว้ล่วงหน้าโดยใช้:

sudo docker pull busybox

ฉันได้รับข้อผิดพลาดนี้:

sudo docker pull busybox 2014/08/18 17:56:19 Post http:///var/run/docker.sock/images/create?fromImage=busybox&tag=: dial unix /var/run/docker.sock: no such file or directory

มีบางอย่างผิดปกติกับการตั้งค่านักเทียบท่าของฉันหรือไม่?

เมื่อฉันทำdocker pull busyboxมันจะดึงภาพและการดาวน์โหลดเสร็จสมบูรณ์

bash-3.2$ docker pull busybox
Pulling repository busybox
a9eb17255234: Download complete 
fd5373b3d938: Download complete 
d200959a3e91: Download complete 
37fca75d01ff: Download complete 
511136ea3c5a: Download complete 
42eed7f1bf2a: Download complete 
c120b7cab0b0: Download complete 
f06b02872d52: Download complete 
120e218dd395: Download complete 
1f5049b3536e: Download complete 
bash-3.2$ docker run busybox /bin/echo Hello Doctor
Hello Doctor

ฉันพลาดอะไรไปรึเปล่า?


ฉันมีปัญหาเดียวกัน ฉันรีบูตแล็ปท็อปของฉัน มันจึงเริ่มทำงานให้ฉัน (ดูdocs.docker.com/installation/ubuntulinux ) พวกเขายังกล่าวถึงการรีสตาร์ทคอมพิวเตอร์
NehaG

ทำงานให้ฉันเมื่อฉันเชื่อมต่อกับอินเทอร์เน็ตฉันไม่รู้ว่าทำไมมันถึงเกิดขึ้น :(
สายราม

คำตอบ:


87

คุณไม่จำเป็นต้องเรียกใช้คำสั่งนักเทียบท่าใด ๆ เช่นsudoเมื่อคุณใช้boot2dockerทุกคำสั่งที่ส่งผ่านไปยังboot2dockerVM จะทำงานเป็นรูทตามค่าเริ่มต้น

คุณเห็นข้อผิดพลาดเมื่อคุณเรียกใช้sudoเนื่องจากsudoไม่มีการDOCKER_HOSTตั้งค่า env มีเพียงผู้ใช้ของคุณเท่านั้นที่ทำ

คุณสามารถยืนยันได้โดยทำ:

$ env

จากนั้นก

$ sudo env

และมองหาDOCKER_HOSTในแต่ละเอาต์พุต

สำหรับการมีไฟล์นักเทียบท่าที่รันสคริปต์ของคุณสิ่งนี้อาจเหมาะกับคุณ:

Dockerfile

FROM busybox

# Copy your script into the docker image
ADD /path/to/your/script.sh /usr/local/bin/script.sh

# Run your script
CMD /usr/local/bin/script.sh

จากนั้นคุณสามารถเรียกใช้:

docker build -t your-image-name:your-tag .

สิ่งนี้จะสร้างภาพนักเทียบท่าของคุณซึ่งคุณสามารถเห็นได้โดยทำ:

docker images

จากนั้นในการเรียกใช้คอนเทนเนอร์ของคุณคุณสามารถทำสิ่งต่อไปนี้

docker run your-image-name:your-tag

คำสั่ง run นี้จะเริ่มคอนเทนเนอร์จากอิมเมจที่คุณสร้างด้วยDockerfileคำสั่ง build ของคุณและจากนั้นจะเสร็จสิ้นเมื่อคุณscript.shดำเนินการเสร็จสิ้น


1
ขออภัยในความไม่รู้ของฉัน แต่ฉันไม่คิดว่าฉันจะประสบความสำเร็จในการสร้าง "docker images": ให้ 2014/08/19 11:11:45 รับ http: ///var/run/docker.sock/v1.13/images/json: dial unix /var/run/docker.sock: ไม่ ไฟล์หรือไดเร็กทอรีดังกล่าว นักเทียบท่าควรอยู่ในโฮมไดเร็กทอรีและสามารถตั้งชื่อด้วยชื่อใด ๆ ได้หรือไม่? เหมือนกับ "รูป - นาม" หรือไม่?
user1189851

คุณสามารถวางคำสั่งที่คุณใช้สร้างอิมเมจนักเทียบท่าได้หรือไม่? ดูเหมือนว่าคุณยังใช้ sudo บนเครื่อง OSX อยู่ในเวลาที่คุณไม่ควรใช้
Chris McKinnel

$ docker build -t / Users / ig / Documents / testing / hellodocker 2014/08/19 11:18:09 ชื่อเนมสเปซไม่ถูกต้อง () อนุญาตเฉพาะ [a-z0-9_] ขนาดระหว่าง 4 ถึง 30 และ hellodocker มีเพียงเนื้อหาของ dockerfile ที่คุณให้มา ขอบคุณมาก.
user1189851

ใช่คุณกำลังพยายามที่จะติดแท็กภาพนักเทียบท่าของคุณกับเส้นทางไฟล์ - ลองอย่างอื่นหลังจากเช่น-t your-image-name:a-tag
Chris McKinnel

คุณช่วยให้บรรทัดคำสั่งฉันได้ไหม ฉันกำลังทำอะไรบางอย่าง ไฟล์นักเทียบท่าของฉันคือ hellodocker และเส้นทางได้รับด้านบน
user1189851

45

คุณสามารถตั้งค่าสภาพแวดล้อมของคุณได้อย่างรวดเร็วโดยใช้ shellinit

ที่พรอมต์คำสั่งของคุณดำเนินการ:

$(boot2docker shellinit)  

ซึ่งจะเติมและส่งออกตัวแปรสภาพแวดล้อมและเริ่มต้นคุณสมบัติอื่น ๆ


26

บน MAC ของฉันเมื่อฉันเริ่ม boot2docker-vm บนเทอร์มินัลโดยใช้


boot2docker start

ฉันเห็นสิ่งต่อไปนี้


To connect the Docker client to the Docker daemon, please set:
    export DOCKER_CERT_PATH=
    export DOCKER_TLS_VERIFY=1
    export DOCKER_HOST=tcp://:2376

หลังจากตั้งค่าตัวแปรสภาพแวดล้อมเหล่านี้ฉันสามารถรันบิลด์ได้โดยไม่มีปัญหา

อัปเดต [2016-04-28]หากคุณใช้นักเทียบท่ารุ่นล่าสุดคุณสามารถทำได้

eval $(docker-machine env) จะกำหนดสภาพแวดล้อม

( docker-machine envจะพิมพ์ใบแจ้งยอดการส่งออก)


2
คุณยังสามารถเพิ่มสิ่งเหล่านี้ลงในโปรไฟล์เทอร์มินัลของคุณเพื่อประหยัดเวลา vm จะแจ้งให้คุณทราบว่าได้ตั้งค่าไว้แล้ว
Joe Susnick

25

docker pullจะล้มเหลวหากdocker serviceไม่ทำงาน ตรวจสอบให้แน่ใจว่าทำงานโดย

:~$ ps aux | grep docker
root     18745  1.7  0.9 284104 13976 ?   Ssl  21:19   0:01 /usr/bin/docker -d

หากยังไม่ทำงานคุณสามารถเริ่มได้โดย

sudo service docker start

สำหรับ Ubuntu 15 ขึ้นไปใช้

sudo systemctl start docker


16

ฉันยังได้รับข้อผิดพลาดนี้ แม้ว่าฉันไม่ได้ใช้ boot2dockerแต่เพิ่งติดตั้งDocker "ธรรมดา"บน Ubuntu (ดูhttps://docs.docker.com/installation/ubuntulinux/ )

ผมได้รับข้อผิดพลาด ( "dial ยูนิกซ์ /var/run/docker.sock: ไม่มีแฟ้มหรือไดเรกทอรีดังกล่าวคุณพยายามที่จะเชื่อมต่อกับภูต TLS เปิดใช้งานโดยไม่ต้อง TLS.?") เนื่องจากนักเทียบท่าภูตไม่ได้ทำงานแต่

บน Ubuntu คุณต้องเริ่มบริการ :

sudo service docker start

ดูเพิ่มเติมที่http://blog.arungupta.me/resolve-dial-unix-docker-sock-error-techtip64


9

สำหรับ boot2docker บน Windows หลังจากเห็น:

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

ทั้งหมดที่ฉันทำคือ:

boot2docker start
boot2docker shellinit

ที่สร้าง:

export DOCKER_CERT_PATH=C:\Users\vonc\.boot2docker\certs\boot2docker-vm
export DOCKER_TLS_VERIFY=1
export DOCKER_HOST=tcp://192.168.59.103:2376

สุดท้าย:

boot2docker ssh

และนักเทียบท่าทำงานอีกครั้ง



5

หากคุณใช้ CentOS 7 และคุณได้ติดตั้ง Docker ผ่าน yum อย่าลืมเรียกใช้:

$ sudo systemctl start docker
$ sudo systemctl enable docker

สิ่งนี้จะเริ่มต้นเซิร์ฟเวอร์และเริ่มต้นใหม่โดยอัตโนมัติเมื่อบูต


4

ในการตั้งค่าสภาพแวดล้อมของคุณและเก็บไว้สำหรับเซสชันในอนาคตคุณสามารถทำได้:

echo 'export DOCKER_HOST="tcp://$(boot2docker ip 2>/dev/null):2375";' >> ~/.bashrc

จากนั้น: source ~/.bashrc

และสภาพแวดล้อมของคุณจะถูกตั้งค่าในทุกเซสชัน


0

/var/run/docker.sock แรกอ้างถึงเส้นทางเดียวกันในเครื่องเสมือน boot2docker ของคุณ เขียนอย่างถูกต้องสำหรับ windows /var/run/docker.sock


ขอคำอธิบายเพิ่มเติมที่นี่ได้ไหม นอกจากนี้ฉันคิดว่าผู้ใช้ใช้เครื่อง Mac
2ps

0

คุณอาจไม่ใช่ OP แต่บางคนอาจมีไดเร็กทอรีที่เรียก/var/run/docker.sock/อยู่แล้วเนื่องจากคุณแฮ็คและเฉือนกี่ครั้งเพื่อให้ได้สิ่งที่ถูกต้องด้วยนักเทียบท่า (โดยเฉพาะ noobs) ลบไดเร็กทอรีนั้นแล้วลองอีกครั้ง

สิ่งนี้ช่วยฉันในการทำให้มันทำงานบน Centos 7 ได้

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