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

问题描述 投票:128回答:11

我通常更喜欢使用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'.

我已经检查了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 Cannot connect to the Docker daemon. Is the docker daemon running on this host?

但我收到此错误消息:

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

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

macos docker macos-sierra
11个回答
284
投票

在支持的Mac上,运行:

brew cask install docker

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

您现在应该能够运行docker命令:

docker ps

因为docker是系统级包,所以不能使用brew install安装它,而必须使用cask。

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


0
投票

我首先通过自制软件尝试了docker和docker-compose,但是这里列出了问题。我不得不从https://docs.docker.com/docker-for-mac/install/安装docker的官方安装,然后一切按预期工作。


0
投票

我只需要运行聚光灯搜索并执行brew cask install创建的/ Applications文件夹下的Docker应用程序。一旦运行,它要求完成安装。然后我能够运行docker ps


51
投票

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

Install docker-machine on macOS

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

  • 使用Brew命令:brew install docker-machine docker
  • Releases page手动: $ 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

见:Get started with Docker for Mac

Configure docker-machine on macOS

创建一个default机器(如果你没有,请参阅:docker-machine ls):

docker-machine create --driver virtualbox default

然后为Docker客户端设置环境:

eval "$(docker-machine env default)"

然后通过列出容器仔细检查:

docker ps

见:Get started with Docker Machine and a local VM


有关:


25
投票

我有同样的问题,我通过以下步骤解决了这个问题:

docker-machine restart

退出终端(或iTerm2等)并重启

eval $(docker-machine env default)

我也回答了它here


9
投票

试试这个来创建默认值。

docker-machine create default

5
投票

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

docker ps

或者docker build ...等......是的,它似乎很奇怪,有些误导,发布

docker --version

即使docker守护程序没有运行也给出了版本...同样适用于那些其他版本的cmd ...我只是遇到了完全相同的症状


3
投票

我有最新的码头工人,码头工人说它正在运行,诊断结果很好。我需要取消一些遗留环境变量(感谢https://docs.docker.com/docker-for-mac/troubleshoot/#workarounds-for-common-problems

unset DOCKER_HOST
unset DOCKER_CERT_PATH
unset DOCKER_TLS_VERIFY

2
投票

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

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

我有一个Docker for Mac安装。因此,我不确定我的解决方案是否适用于Homebrew安装。

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

希望这有助于其他人!


1
投票

我有Mac OS,我打开Launchpad并选择docker应用程序。从reset标签点击restart


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无需安装所有其他docker废话。 minikube附带的VM和安装脚本可以取代我的经验中的docker机器。

© www.soinside.com 2019 - 2024. All rights reserved.