Không thể kết nối với daemon Docker trên macOS


205

Tôi thường thích quản lý các ứng dụng của mình trên OSX bằng brew

Tôi có thể cài đặt docker, docker-compose và docker-machine

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

Tôi đã không tải xuống và chạy ứng dụng 'Docker for Mac'.

Tuy nhiên khi tôi cố chạy

> 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'.

Tôi đã kiểm tra tập tin 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

Tôi cũng đã thử giải pháp được đề xuất này: Mac OS X sudo docker Không thể kết nối với daemon Docker. Là daemon docker chạy trên máy chủ này?

Nhưng tôi nhận được thông báo lỗi này:

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

Có thể có được một dịch vụ docker để chạy bằng các công cụ dòng lệnh?


2
Khởi chạy ứng dụng Docker từ Launchpad, sẽ hiển thị hộp thoại yêu cầu chạy Ứng dụng, cần được cấp một số đặc quyền cho Ứng dụng này, sau đó, Docker trở lại trò chơi.
Rafael Kerr

Trong trường hợp của tôi, có một người dùng khác đã đăng nhập, đó là lý do tại sao nó bị lỗi. Đăng xuất người dùng khác và sau đó làm việc
Raza Ahmed

Câu trả lời:


469

Trên máy Mac được hỗ trợ, hãy chạy:

brew cask install docker

Sau đó khởi chạy ứng dụng Docker . Nhấn tiếp. Nó sẽ yêu cầu truy cập đặc quyền. Xác nhận. Một biểu tượng cá voi sẽ xuất hiện trong thanh trên cùng. Nhấp vào nó và đợi "Docker đang chạy" xuất hiện.

Bạn sẽ có thể chạy dockercác lệnh ngay bây giờ:

docker ps

Vì docker là gói cấp hệ thống, bạn không thể cài đặt nó bằng cách sử dụng brew installvà phải sử dụng thùng thay thế.

Lưu ý: Giải pháp này chỉ hoạt động đối với máy Mac có CPU hỗ trợ ảo hóa, có thể không bao gồm máy Mac cũ.


10
Đây phải là câu trả lời được chấp nhận. Chuyển đến bệ phóng sau khi cài đặt và tìm kiếm docker
Joe Lloyd

39
Tôi đã thực hiện một docker cài đặt brew và ứng dụng chưa được cài đặt cho đến khi tôi chạy lệnh docker thùng cài đặt. Cảm ơn!
jbrahy

2
Điều gì xảy ra nếu lệnh vẫn không hoạt động ngay cả sau khi cài đặt thùng (và cá voi Docker cho thấy nó đang chạy sau khi được cung cấp mật khẩu)?
vol7ron

2
Giải pháp này chỉ hoạt động cho máy Mac có CPU hỗ trợ ảo hóa. Nó không hoạt động trên Mac Pro 2009 chẳng hạn. Bạn có thể vui lòng chỉnh sửa câu trả lời của bạn để bao gồm thực tế quan trọng này?
John Y

3
Điều này giúp tôi khi tôi sử dụng brew install dockerban đầu. brew installđối phó với các dịch vụ CLI và brew cask installlà một phần mở rộng giúp đối phó với các dịch vụ có giao diện người dùng đồ họa.
Binoy S Kumar

106

Trên macOS, dockernhị phân chỉ là máy khách và bạn không thể sử dụng nó để chạy trình nền của docker, vì trình nền Docker sử dụng các tính năng hạt nhân dành riêng cho Linux, do đó bạn không thể chạy Docker tự nhiên trong OS X. Vì vậy, bạn phải cài đặt docker-machineđể tạo VM và đính kèm với nó.

Cài đặt docker-machinetrên macOS

Nếu bạn chưa có docker-machinelệnh, hãy cài đặt nó bằng cách sử dụng một trong các phương pháp sau:

  • Sử dụng lệnh Brew : brew install docker-machine docker.
  • Thủ công từ trang Phát hành :

    $ 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
    

Xem: Bắt đầu với Docker cho Mac .

Cài đặt Virtualbox

docker-machinedựa vào VirtualBox đang được cài đặt và sẽ thất bại nếu không phải như vậy. Nếu bạn đã có VirtualBox, bạn có thể bỏ qua bước này.

  • Sử dụng Homebrew: brew cask install virtualbox
  • Sử dụng thủ công các bản phát hành trên Virtualbox.org

Bạn sẽ cần chủ động chấp nhận tải phần mở rộng kernel Virtualbox trong bảng điều khiển OS X Security và sau đó tiến hành khởi động lại máy để các lệnh tiếp theo không bị lỗi vớiError: VBoxNetAdpCtl: Error while adding new interface

Cấu hình docker-machinetrên macOS

Tạo một defaultmáy (nếu bạn không có, hãy xem docker-machine ls:):

docker-machine create --driver virtualbox default

Sau đó, thiết lập môi trường cho máy khách Docker:

eval "$(docker-machine env default)"

Sau đó kiểm tra lại bằng cách liệt kê các container:

docker ps

Xem: Bắt đầu với Docker Machine và VM cục bộ .


Liên quan:


7
đây sẽ là câu trả lời được chấp nhận Nó nêu rõ a) tại sao nó không hoạt động, b) hướng dẫn để làm cho nó hoạt động mà không cần tải xuống UI trên OSX và c) các liên kết tham chiếu để đọc thêm.
user2490003

1
Tôi cũng đã phải cài đặt hộp ảo để các lệnh brew cask install virtualbox
docker

1
Để bắt đầu docker-machineđăng nhập, hãy sử dụng brew services start docker-machinehoặc, nếu bạn không muốn sử dụng Homebrew, hãy xem phần "Khởi động máy cục bộ khi khởi động" của trang này (bao gồm hướng dẫn cho Mac).
Chris H.

40

Tôi đã có vấn đề tương tự, tôi đã giải quyết nó trong các bước sau:

docker-machine restart

Thoát khỏi terminal (hoặc iTerm2, v.v.) và khởi động lại

eval $(docker-machine env default)

Tôi cũng đã trả lời nó ở đây


2
Một eval "nên" là tất cả những gì bạn cần :)
rogerdpack 19/07/18

15

Tôi có Mac OS và tôi mở Launchpadvà chọn dockerứng dụng. từ resettab bấm vào restart.


Có, bạn phải khởi chạy ứng dụng Docker trước haha
Ender

12

Hãy thử điều này để tạo mặc định.

docker-machine create default

5
điều này chỉ cho tôi ... docker-machine tạo mặc định Tạo CA: /Users/stens/.docker/machine/certs/ca.pem Tạo chứng chỉ ứng dụng khách: /Users/stens/.docker/machine/certs/cert.pem Chạy kiểm tra trước khi tạo ... Lỗi với kiểm tra trước khi tạo: "Không tìm thấy VBoxManage. Hãy chắc chắn rằng VirtualBox đã được cài đặt và VBoxManage nằm trong đường dẫn" .... có vẻ như sai vì VirtualBox không còn cần thiết để chạy docker trên osx
Scott Stensland

Xuất hiện bạn cũng có thể sử dụng xhyve, xem stackoverflow.com/a/42419979/32453 hoặc chỉ cần cài đặt
hộp

Và gì nữa ?
FrankyFred

7

trên OSX đảm bảo bạn đã khởi chạy ứng dụng Docker trước khi phát hành

docker ps

hoặc docker build... vv ... vâng, có vẻ lạ và có phần sai lệch khi ban hành

docker --version

cung cấp phiên bản ngay cả khi trình nền docker không chạy ... ditto cho các cmds phiên bản khác đó ... Tôi chỉ gặp chính xác các triệu chứng tương tự ... hành vi này trên OSX khác với trên linux


3

Tôi đã từng gặp vấn đề tương tự. Docker đang chạy nhưng không thể truy cập nó thông qua CLI.

Đối với tôi, vấn đề đã được giải quyết bằng cách thực hiện "Docker Quickstart Terminal.app". Cái này nằm trong thư mục "/ Ứng dụng / Docker /". Miễn là tôi làm việc trong trường hợp này của Docker ứng dụng Terminal hoạt động hoàn hảo. Nếu cần một cửa sổ thứ hai, tôi phải chạy ứng dụng "Khởi động nhanh" một lần nữa.

Tôi có một Docker cho cài đặt Mac. Do đó, tôi không chắc liệu giải pháp của mình có hợp lệ cho cài đặt Homebrew hay không.

Ứng dụng "Docker Quickstart Terminal" dường như về cơ bản là một số bản sao để khởi chạy ứng dụng đầu cuối và tập lệnh bash start khởi tạo tất cả các biến môi trường cần thiết.

Hy vọng điều này sẽ giúp người khác !


3

Tôi đã cập nhật docker, docker cho biết nó đang chạy và chẩn đoán rất tốt. Tôi cần hủy đặt một số biến môi trường cũ (cảm ơn https://docs.docker.com/docker-for-mac/troubledhoot/#workaround-for-common-probols )

unset DOCKER_HOST
unset DOCKER_CERT_PATH
unset DOCKER_TLS_VERIFY

1
điều này đã khắc phục sự cố của tôi sau khi cập nhật từ docker dựa trên VM lên Trình cài đặt Mac. Nó cứ tìm VM.
bobomoreno

sử dụng điều này nếu bạn thấy một địa chỉ IP sai trong 'Không thể kết nối ... vv'
bobomoreno

2

Docker cho Mac không được dùng nữa. Và bạn không cần Homebrew để chạy Docker trên Mac. Thay vào đó, bạn có thể muốn cài đặt Docker Desktop hoặc, nếu đã được cài đặt, hãy đảm bảo rằng nó được cập nhật và chạy, sau đó thử kết nối lại với ổ cắm.

nhập mô tả hình ảnh ở đây


2

Bạn nên thực thi tập lệnh để cài đặt docker và khởi chạy nó từ dòng lệnh:

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

sau đó docker-composenên làm việc


làm việc cho tôi, cảm ơn
Soul Coder

1

Cài đặt minikube và tham gia vào mặt tối.

https://kubernetes.io/docs/t task / 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'.

Hoạt động tuyệt vời trên Macbook Pro 2018 với bash v5. Không cần phải cài đặt tất cả các docker vô nghĩa khác những ngày này IMO. VM và cài đặt tập lệnh đi kèm với minikube có thể thay thế máy docker theo kinh nghiệm của tôi.


Như một bình luận tiếp theo, tôi cũng cần docker cho một dự án khác w / o kube và máy tính để bàn docker hoạt động rất tốt. Chỉ cần không khởi động nó luôn nếu không kube sẽ tức giận từ bài đăng này.
Ligemer

1

Tôi đã phải đối mặt với vấn đề tương tự trên máy Mac của mình và tôi thấy rằng docker không chạy trong máy của mình, tôi chỉ đi đến các ứng dụng và gọi cá voi và sau đó nó hoạt động.


0

Lần đầu tiên tôi đã thử docker và docker-compose thông qua homebrew, nhưng nó có vấn đề được liệt kê ở đây. Tôi đã phải cài đặt bản cài đặt chính thức của docker từ https://docs.docker.com/docker-for-mac/install/ và sau đó mọi thứ hoạt động như mong đợi.


0

tôi chỉ đơn giản là phải chạy tìm kiếm spotlight và thực thi ứng dụng Docker trong thư mục / Ứng dụng đã brew cask installtạo. Một khi điều này được chạy nó yêu cầu hoàn thành cài đặt. Sau đó tôi đã có thể chạydocker ps

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.