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

时间:2017-05-20 10:36:16

标签: macos docker macos-sierra

我通常更喜欢使用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 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服务?

15 个答案:

答案 0 :(得分:258)

brew cask install docker

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

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

docker ps

答案 1 :(得分:46)

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

在macOS上安装docker-machine

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

  • 使用Brew命令:brew install docker-machine docker
  • 手动:

    install -v <(curl https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine
    

请参阅:Get started with Docker for Mac

在macOS上配置docker-machine

创建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

相关:

答案 2 :(得分:24)

我遇到了同样的问题,我在以下步骤中解决了这个问题:

docker-machine restart

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

eval $(docker-machine env default)

我也回答了它here

答案 3 :(得分:9)

尝试此操作以创建默认值。

docker-machine create default

答案 4 :(得分:5)

OSX上的

确保您在发布

之前启动了Docker应用程序
docker ps

docker build ...等......是的,发布

似乎很奇怪,有些误导
docker --version
即使docker守护程序没有运行,

也会提供版本...同样适用于那些其他版本的cmd ...我只是遇到了完全相同的症状

答案 5 :(得分:4)

您应该执行用于安装docker的脚本并从命令行启动它:

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

之后docker-compose应该起作用

答案 6 :(得分:3)

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

unset DOCKER_HOST
unset DOCKER_CERT_PATH
unset DOCKER_TLS_VERIFY

答案 7 :(得分:2)

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

对我来说,问题是通过执行&#34; Docker Quickstart Terminal.app&#34;解决的。它位于&#34; / Applications / Docker /&#34;夹。只要我在终端应用程序的这个实例中工作Docker就能完美运行。如果需要第二个窗口,我必须运行&#34;快速启动&#34;应用程序再次。

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

&#34; Docker快速入门终端&#34;应用程序似乎基本上是一些用于启动终端应用程序的应用程序和一个初始化所有必要环境变量的bash启动脚本。

希望这有助于其他人!

答案 8 :(得分:1)

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

答案 9 :(得分: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计算机。

答案 10 :(得分:0)

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

答案 11 :(得分:0)

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

答案 12 :(得分:0)

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

答案 13 :(得分:0)

此问题:

$ brew install docker docker-machine
$ docker ps

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

这显然意味着要执行以下操作:

$ docker-machine create default # default driver is apparently vbox:
Running pre-create checks...
Error with pre-create check: "VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path"
$  brew cask install virtualbox
…
$ docker-machine create default 
# works this time
$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
$ eval "$(docker-machine env default)"
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

终于可以了。

如果您不想安装虚拟盒,则可以使用“ xhyve”驱动程序。 另外,您也可以安装“ docker app”(然后运行它),这显然可以使它运行,因此您不必运行上述某些程序。 brew cask install docker然后运行应用程序,查看其他答案。但显然本身并不必要。

答案 14 :(得分:0)

尝试了以下方法,现在工作正常

$ docker-machine create default
(default) Creating VirtualBox VM...
(default) Creating SSH key...
(default) Starting the VM...
(default) Check network to re-create if needed...
(default) Found a new host-only adapter: "vboxnet0"
(default) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!

然后

$ docker-machine env default

终于

$ eval $(docker-machine env default)
$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES