ไม่สามารถเชื่อมต่อกับ Docker daemon บน macOS


204

ปกติแล้วฉันชอบที่จะจัดการแอพของฉันบน OSX ด้วย Brew

ฉันสามารถติดตั้งนักเทียบท่านักเทียบท่าเขียนและนักเทียบท่าเครื่องได้

docker --version
Docker version 17.05.0-ce, build 89658be
docker-compose --version
docker-compose version 1.13.0, build unknown
docker-machine --version
docker-machine version 0.11.0, build 5b27455

ฉันไม่ได้ดาวน์โหลดและเรียกใช้แอพ 'Docker for Mac'

อย่างไรก็ตามเมื่อฉันพยายามวิ่ง

> docker run -d -p 80:80 --name webserver nginx
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.

ฉันตรวจสอบไฟล์ sock แล้ว

ls -lah /var/run/docker.sock /var/tmp/docker.sock
ls: /var/run/docker.sock: No such file or directory
ls: /var/tmp/docker.sock: No such file or directory

ฉันได้ลองวิธีแก้ปัญหาที่เสนอนี้แล้ว: Mac OS X sudo docker ไม่สามารถเชื่อมต่อกับ Docker daemon ได้ daemon ตัวเทียบท่าทำงานบนโฮสต์นี้หรือไม่

แต่ฉันได้รับข้อความแสดงข้อผิดพลาดนี้:

$ eval $(docker-machine env default)
Host does not exist: "default"

เป็นไปได้หรือไม่ที่จะได้รับบริการ docker เพื่อให้ทำงานโดยเครื่องมือบรรทัดคำสั่ง?


2
เปิดตัวแอพพลิเคชั่น Docker จาก Launchpad จะแสดงกล่องโต้ตอบถามว่าสำหรับการเรียกใช้แอพจำเป็นต้องได้รับสิทธิ์พิเศษสำหรับแอพนี้หลังจากนี้ Docker จะกลับมาที่เกม
Rafael Kerr

ในกรณีของฉันมีผู้ใช้อื่นเข้าสู่ระบบนั่นเป็นเหตุผลว่าทำไมจึงล้มเหลว ออกจากระบบผู้ใช้รายอื่นและทำงานในตอนนั้น
Raza Ahmed

คำตอบ:


467

บน Mac ที่รองรับให้รัน:

brew cask install docker

จากนั้นเปิดแอพDocker คลิกถัดไป มันจะขอสิทธิ์การเข้าถึง ยืนยัน. ไอคอนวาฬควรปรากฏในแถบด้านบน คลิกและรอให้ "Docker is running" ปรากฏขึ้น

คุณควรจะสามารถรันdockerคำสั่งได้ทันที:

docker ps

เนื่องจากนักเทียบท่าเป็นแพ็คเกจระดับระบบคุณจึงไม่สามารถติดตั้งได้โดยใช้brew installและต้องใช้ถังแทน

หมายเหตุ: วิธีนี้ใช้ได้กับ Mac ที่ซีพียูรองรับการจำลองเสมือนเท่านั้นซึ่งอาจไม่รวมถึง Macs รุ่นเก่า


10
นี่ควรเป็นคำตอบที่ยอมรับได้ ไปที่ Launchpad หลังจากติดตั้งและค้นหา docker
Joe Lloyd

39
ฉันได้ติดตั้งตัวติดตั้งชงและไม่ได้ติดตั้งแอปจนกว่าฉันจะเรียกใช้ชุดติดตั้งชงคำสั่ง ขอบคุณ!
jbrahy

2
จะเกิดอะไรขึ้นถ้าคำสั่งยังคงไม่ทำงานแม้หลังจากการติดตั้งถัง (และปลาวาฬ Docker แสดงว่ามันทำงานหลังจากได้รับรหัสผ่าน)
vol7ron

2
โซลูชันนี้ใช้งานได้กับ Mac ที่ซีพียูรองรับระบบเสมือนจริงเท่านั้น มันไม่ทำงานบน 2009 Mac Pro เช่น คุณช่วยแก้ไขคำตอบของคุณเพื่อรวมข้อเท็จจริงที่สำคัญนี้ได้ไหม
John Y

3
สิ่งนี้ช่วยฉันอย่างที่ฉันเคยใช้brew install dockerในตอนแรก brew installจัดการกับบริการ CLI และbrew cask installเป็นส่วนเสริมที่ช่วยในการจัดการกับบริการด้วยส่วนติดต่อผู้ใช้แบบกราฟิก
Binoy S Kumar

106

บน macOS dockerไบนารีเป็นเพียงไคลเอ็นต์และคุณไม่สามารถใช้เพื่อเรียกใช้ docker daemon เนื่องจาก Docker daemon ใช้คุณสมบัติเคอร์เนลเฉพาะ Linux ดังนั้นคุณจึงไม่สามารถเรียกใช้ Docker ได้ใน OS X ดังนั้นคุณต้องติดตั้งdocker-machineเพื่อสร้าง VM และแนบไปกับมัน

ติดตั้งdocker-machineบน macOS

หากคุณยังไม่มีdocker-machineคำสั่งให้ติดตั้งโดยใช้วิธีใดวิธีหนึ่งต่อไปนี้:

  • ใช้Brewbrew install docker-machine dockerสั่ง:
  • ด้วยตนเองจากหน้าข่าว :

    $ curl -L https://github.com/docker/machine/releases/download/v0.16.1/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine
    $ chmod +x /usr/local/bin/docker-machine
    

ดู: เริ่มต้นด้วยการเทียบท่าสำหรับ Mac

ติดตั้ง Virtualbox

docker-machineอาศัย VirtualBox ที่กำลังติดตั้งและจะล้มเหลวหากไม่เป็นเช่นนั้น หากคุณมี VirtualBox อยู่แล้วคุณสามารถข้ามขั้นตอนนี้ได้

  • ใช้ Homebrew: brew cask install virtualbox
  • ใช้การเผยแพร่ด้วยตนเองบนVirtualbox.org

คุณจะต้องยอมรับการโหลดส่วนขยายเคอร์เนล Virtualbox ในแผงการรักษาความปลอดภัย OS X อย่างปลอดภัยจากนั้นดำเนินการรีสตาร์ทเครื่องสำหรับคำสั่งถัดไปที่จะไม่ล้มเหลวด้วยError: VBoxNetAdpCtl: Error while adding new interface

กำหนดค่าdocker-machineบน macOS

สร้างdefaultเครื่อง (หากคุณไม่มีเครื่องให้ดู:) docker-machine ls:

docker-machine create --driver virtualbox default

จากนั้นตั้งค่าสภาพแวดล้อมสำหรับไคลเอ็นต์ Docker:

eval "$(docker-machine env default)"

จากนั้นตรวจสอบอีกครั้งโดยระบุคอนเทนเนอร์:

docker ps

โปรดดูที่: เริ่มต้นด้วยการเทียบท่าเครื่องและ VM


ที่เกี่ยวข้อง:


7
นี่ควรเป็นคำตอบที่ยอมรับได้ มันอธิบายอย่างชัดเจน a) สาเหตุที่ใช้งานไม่ได้ข) คำแนะนำในการทำให้มันใช้งานได้โดยไม่ต้องดาวน์โหลด UI บน OSX และ c) ลิงก์อ้างอิงสำหรับการอ่านเพิ่มเติม
user2490003

1
ฉันยังต้องติดตั้ง virtualbox เพื่อให้ได้คำสั่งbrew cask install virtualbox
docker

1
หากต้องการเริ่มใช้การdocker-machineเข้าสู่ระบบให้ใช้brew services start docker-machineหรือหากคุณไม่ต้องการใช้ Homebrew ให้ดูที่ส่วน "เริ่มเครื่องภายในเมื่อเริ่มต้น" ของหน้านี้ (มีคำแนะนำสำหรับ Mac)
Chris H.

40

ฉันมีปัญหาเดียวกันนี้ฉันแก้ไขได้ในขั้นตอนต่อไปนี้:

docker-machine restart

ออกจากเทอร์มินัล (หรือ iTerm2 ฯลฯ ฯลฯ ) แล้วรีสตาร์ท

eval $(docker-machine env default)

ฉันยังตอบมันที่นี่


2
ป้ายชื่อ EVAL หนึ่ง "ควร" จะเป็นสิ่งที่คุณต้องการ :)
rogerdpack

15

ฉันมี Mac OS และฉันเปิดLaunchpadและเลือกdockerแอปพลิเคชัน จากแท็บคลิกresetrestart


ใช่คุณต้องเปิดโปรแกรมหาง haha แรก
พลิก

12

ลองใช้วิธีนี้เพื่อสร้างค่าเริ่มต้น

docker-machine create default

5
สิ่งนี้เพิ่งให้ฉัน ... นักเทียบท่าเครื่องจักรสร้างค่าเริ่มต้นกำลังสร้าง CA: /Users/stens/.docker/machine/certs/ca.pem กำลังสร้างใบรับรองไคลเอ็นต์: /Users/stens/.docker/machine/certs/cert.pem ก่อนสร้างการตรวจสอบข้อผิดพลาด ... กับก่อนการสร้างการตรวจสอบ: "VBoxManage ไม่พบให้แน่ใจว่ามีการติดตั้ง VirtualBox และ VBoxManage อยู่ในเส้นทาง." .... ซึ่งดูเหมือนว่าผิดตั้งแต่ VirtualBox ไม่จำเป็นที่จะต้องเรียกนักเทียบท่าใน OSX
Scott Stensland

ปรากฏว่าคุณสามารถใช้งานได้xhyveเช่นกันดูstackoverflow.com/a/42419979/32453หรือเพียงติดตั้ง virtualbox :)
rogerdpack

แล้วไง ?
FrankyFred

7

บน OSX รับรองว่าคุณได้เปิดตัวแอปพลิเคชัน Docker ก่อนที่จะออก

docker ps

หรือdocker build... ฯลฯ ... ใช่ดูเหมือนแปลกและค่อนข้างเข้าใจผิดว่าการออก

docker --version

ให้รุ่นแม้ว่าดีมอนภูตไม่ทำงาน ... เหมือนกันสำหรับ cmds รุ่นอื่น ๆ ... ฉันเพิ่งพบอาการเดียวกัน ... พฤติกรรมนี้บน OSX แตกต่างจากบน linux


3

ผมมีปัญหาเหมือนกัน. นักเทียบท่าทำงาน แต่ไม่สามารถเข้าถึงได้ผ่าน CLI

สำหรับฉันปัญหาได้รับการแก้ไขโดยการเรียกใช้ "Docker Quickstart Terminal.app" ตั้งอยู่ในโฟลเดอร์ "/ Applications / Docker /" ตราบใดที่ฉันทำงานในอินสแตนซ์ของแอป Terminal นี้ทำงานได้อย่างสมบูรณ์ หากต้องการหน้าต่างที่สองฉันต้องเรียกใช้แอป "Quickstart" อีกครั้ง

ฉันมีตัวติดตั้ง Docker สำหรับ Mac ดังนั้นฉันไม่แน่ใจว่าโซลูชันของฉันนั้นถูกต้องสำหรับการติดตั้ง Homebrew หรือไม่

แอพ "Docker Quickstart Terminal" ดูเหมือนจะเป็นแอพพลิเคชั่นบางตัวที่ใช้เรียกแอปเทอร์มินัลและสคริปต์เริ่มต้นทุบตีที่เริ่มต้นตัวแปรสภาพแวดล้อมที่จำเป็นทั้งหมด

หวังว่านี่จะช่วยคนอื่นได้!


3

ฉันมีนักเทียบท่าที่ทันสมัยนักเทียบท่าบอกว่ามันทำงานอยู่และการวินิจฉัยก็ดี ฉันต้องการยกเลิกการตั้งค่าตัวแปรสภาพแวดล้อมดั้งเดิม (ขอบคุณhttps://docs.docker.com/docker-for-mac/troubleshoot/#workarounds-for-common-problems )

unset DOCKER_HOST
unset DOCKER_CERT_PATH
unset DOCKER_TLS_VERIFY

1
สิ่งนี้แก้ไขปัญหาของฉันหลังจากการอัปเดตจากนักเทียบท่าที่ใช้ VM เป็น Mac Installer มันยังคงมองหา VM
bobomoreno

ใช้สิ่งนี้หากคุณเห็นที่อยู่ IP ไม่ถูกต้องใน 'ไม่สามารถเชื่อมต่อ ... ฯลฯ '
bobomoreno

2

นักเทียบท่าสำหรับ Mac เลิกใช้แล้ว และคุณไม่จำเป็นต้องใช้ Homebrew เพื่อเรียกใช้ Docker บน Mac แต่คุณน่าจะต้องการติดตั้ง Docker Desktop หรือหากติดตั้งไว้แล้วตรวจสอบให้แน่ใจว่ามันทันสมัยและใช้งานได้แล้วพยายามเชื่อมต่อกับซ็อกเก็ตอีกครั้ง

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


2

คุณควรเรียกใช้งานสคริปต์สำหรับติดตั้งตัวติดตั้งและเรียกใช้จากบรรทัดคำสั่ง:

brew cask install docker
pip3 install docker-compose
open -a Docker
docker-compose ... 

หลังจากนั้นdocker-composeควรทำงาน


ทำงานให้ฉันขอบคุณ
Soul Coder

1

ติดตั้ง minikube และเข้าร่วมด้านมืด

https://kubernetes.io/docs/tasks/tools/install-minikube/

$ bash --version
GNU bash, version 5.0.3(1)-release (x86_64-apple-darwin18.2.0)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

eval $(minikube docker-env)

$ docker run --rm -v ${PWD}:/local swaggerapi/swagger-codegen-cli generate     -i /local/swagger.json     -l python     -o /local/test/
[main] INFO io.swagger.parser.Swagger20Parser - reading from /local/swagger.json
[main] WARN io.swagger.codegen.DefaultGenerator - 'host' not defined in the spec. Default to 'localhost'.

ใช้งานได้ดีกับ Macbook Pro 2018 ด้วย bash v5 ไม่จำเป็นต้องติดตั้งนักเทียบท่าคนอื่น ๆ ไร้สาระทุกวันนี้ IMO VM และสคริปต์การติดตั้งที่มาพร้อมกับ minikube สามารถแทนที่เครื่องนักเทียบท่าจากประสบการณ์ของฉัน


จากความคิดเห็นติดตามฉันต้องการนักเทียบท่าเช่นกันสำหรับโครงการอื่นที่ไม่มี kube และเดสก์ท็อปนักเทียบท่าใช้งานได้ดี อย่าเพิ่งเริ่มต้นขึ้นเสมอมิฉะนั้น Kube จะโกรธจากโพสต์นี้
Ligemer

1

ฉันกำลังเผชิญกับปัญหาที่คล้ายกันใน mac ของฉันและฉันพบว่านักเทียบท่าไม่ได้ทำงานในเครื่องของฉันฉันเพิ่งไปที่แอปพลิเคชันและเรียกวาฬแล้วก็ใช้งานได้


0

ครั้งแรกที่ฉันลองนักเทียบท่าและนักเทียบท่าเขียนผ่าน homebrew แต่มีปัญหาอยู่ที่นี่ ฉันต้องติดตั้งการติดตั้งอย่างเป็นทางการของนักเทียบท่าจากhttps://docs.docker.com/docker-for-mac/install/จากนั้นทุกอย่างทำงานตามที่คาดไว้


0

ฉันเพียงแค่ต้องเรียกใช้การค้นหาที่น่าสนใจและรันแอพพลิเคชั่น Docker ภายใต้โฟลเดอร์ / Applications ที่brew cask installสร้างขึ้น เมื่อมีการเรียกใช้แล้วระบบจะขอให้ทำการติดตั้งให้เสร็จ ฉันสามารถวิ่งได้docker ps

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