无法连接到macOS上的Docker守护程序


204

我通常更喜欢用brew在OSX上管理我的应用程序

我能够安装docker,docker-compose和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

我没有下载并运行“ 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'.

我已经检查了袜子文件

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守护程序。docker守护程序是否在此主机上运行?

但是我得到了这个错误信息:

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

是否可以通过命令行工具运行docker服务?


2
从Launchpad启动Docker应用程序,将显示一个对话框,要求运行该应用程序,必须授予该应用程序一定的特权,然后,Docker返回游戏。
拉斐尔·克尔

在我的情况下,还有另一个用户登录,这就是失败的原因。注销其他用户,然后工作
Raza Ahmed

Answers:


466

在受支持的Mac上,运行:

brew cask install docker

然后启动Docker应用。点击下一步。它将要求特权访问。确认。鲸鱼图标应出现在顶部栏中。单击它,然后等待“ Docker正在运行”出现。

docker现在应该可以运行命令:

docker ps

由于docker是系统级软件包,因此无法使用进行安装brew install,而必须使用cask进行安装。

注意:此解决方案仅适用于CPU支持虚拟化的Mac(可能不包括旧Mac)。


10
这应该是公认的答案。安装并搜索docker后转到启动板
Joe Lloyd

39
我做了一个brew install docker,直到运行命令brew cask install docker才安装该应用程序。谢谢!
jbrahy

2
如果即使在安装cask之后该命令仍然不起作用(并且Docker whale显示在输入密码后它仍在运行),该命令会发生什么情况?
vol7ron

2
该解决方案仅适用于CPU支持虚拟化的Mac。它并没有在2009年的Mac Pro的工作,例如。您能否编辑您的答案以包括这一重要事实?
约翰Y

3
这帮助了我,因为我使用的brew install docker最初阶段。brew install处理CLI服务,并且brew cask install是一个扩展,有助于通过图形用户界面处理服务。
Binoy S Kumar

106

在macOS上,docker二进制文件只是一个客户端,您不能使用它来运行docker守护程序,因为Docker守护程序使用特定于Linux的内核功能,因此您不能在OS X上本地运行Docker。因此,必须进行安装docker-machine才能创建VM并附加到它。

docker-machine在macOS上安装

如果您还没有docker-machine命令,请使用以下方法之一安装它:

  • 使用Brew命令:brew 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
    

请参阅:Docker for Mac入门

安装Virtualbox

docker-machine依赖于VirtualBox的安装,如果不是这种情况,它将失败。如果您已经有VirtualBox,则可以跳过此步骤。

  • 使用自制软件: brew cask install virtualbox
  • 手动使用Virtualbox.org上的发行版

您将需要积极接受在OS X“安全性”面板中加载Virtualbox内核扩展,然后继续重新启动计算机,以使下一个命令不会失败。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

请参阅:Docker Machine和本地VM入门


有关:


7
这应该是公认的答案。它清楚地概述了a)为什么不起作用,b)在不下载OSX上的UI的情况下使它起作用的说明,以及c)参考链接以供进一步阅读。
user2490003

1
我还必须安装virtualbox才能使brew cask install virtualbox
docker

1
要启动docker-machine登录,请使用,brew services start docker-machine或者,如果您不想使用Homebrew,请参阅此页面的“启动时启动本地计算机”部分(包括Mac的说明)。
克里斯H.19年

40

我遇到了相同的问题,可通过以下步骤解决:

docker-machine restart

退出终端(或iTerm2等),然后重新启动

eval $(docker-machine env default)

我也在这里回答


2
评估者“应该”成为您所需要的一切:)
rogerdpack '18


12

尝试创建默认值。

docker-machine create default

5
这只是给我... docker-machine创建默认值创建CA:/Users/stens/.docker/machine/certs/ca.pem创建客户端证书:/Users/stens/.docker/machine/certs/cert.pem运行创建前检查...创建前检查错误:“未找到VBoxManage。确保已安装VirtualBox,并且VBoxManage在路径中” ....这似乎是错误的,因为VirtualBox不再需要在osx上运行docker
Scott Stensland

似乎您也可以使用xhyve,请参见stackoverflow.com/a/42419979/32453或仅安装virtualbox :)
rogerdpack

然后呢?
FrankyFred

7

在OSX上确保在发布前已启动Docker应用程序

docker ps

docker build...等等...是的,这似乎很奇怪,并且在某种程度上误导了发行

docker --version

即使docker daemon没有运行也给出版本...对于其他版本的cmds也是一样的...我只是遇到了完全相同的症状... OSX上的这种行为与Linux上的行为不同


3

我有同样的问题。Docker正在运行,但无法通过CLI访问它。

对我来说,这个问题是通过执行“ Docker Quickstart Terminal.app”解决的。它位于“ / Applications / Docker /”文件夹中。只要我在终端应用程序的这个实例中工作,Docker就会完美地工作。如果需要第二个窗口,则必须再次运行“ Quickstart”应用程序。

我有用于Mac的Docker安装。因此,我不确定我的解决方案对于Homebrew安装是否有效。

“ Docker Quickstart Terminal”应用似乎本质上是一些用于启动终端应用的applescript和bash启动脚本,用于初始化所有必要的环境变量。

希望这对别人有帮助!


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的docker更新到Mac Installer之后,此问题解决了。它一直在寻找虚拟机。
bobomoreno '18

如果您在“无法连接...等”中看到错误的IP地址,请使用此选项
bobomoreno

2

不建议使用Mac版Docker。而且您不需要Homebrew在Mac上运行Docker。相反,您可能需要安装Docker Desktop,或者如果已经安装,请确保它是最新的并且正在运行,然后尝试再次连接到套接字。

在此处输入图片说明



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

在带有bash v5的Macbook Pro 2018上运行良好。如今,IMO无需安装所有其他废话。根据我的经验,minikube随附的VM和安装脚本可以代替docker计算机。


作为后续评论,我还需要docker用于另一个没有kube的项目,并且docker桌面运行良好。只是不要总是启动它,否则kube会从这篇文章中生气。
Ligemer

1

我在Mac上遇到了类似的问题,我发现docker不在我的计算机上运行,​​我只是去了应用程序并调用了whale,然后它起作用了。



0

我只需要运行Spotlight搜索并在brew cask install创建的/ Applications文件夹下执行Docker应用程序。一旦运行,它要求完成安装。然后我就可以跑步docker ps

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.