Docker 错误拨号 unix /var/run/docker.sock: 没有那个文件或目录

Docker error dial unix /var/run/docker.sock: no such file or directory

我曾经安装过 boot2docker,但最近安装了 Mac (运行 10.11) 的 Docker ToolBox 应用程序。当我打开 iTerm 并输入 docker ps 时,我收到以下消息。

Get http:///var/run/docker.sock/v1.20/containers/json: dial unix /var/run/docker.sock: no such file or directory.
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?

我以前使用 boot2docker 所以我假设现在需要工具箱。我启动了应用程序 Docker quick start terminal,它只能在他们的终端内运行。但是,我想在自己的终端等中使用 docker

为什么会出现此错误?如何解决?

编辑:您可能希望使用 Adam B 的回答,因为 docker-machine 是现在处理 "remote" docker 引擎的标准方式。感谢您指出 Adam B.

例如eval $(docker-machine env default)

原回答:

在 OS X 上,Docker 引擎在虚拟机(最常见的是 Virtualbox)中运行。为了启用与此 Docker 引擎的通信,Docker 快速启动终端设置了几个环境变量,这些变量告诉 OS X 安装上的 docker 二进制文件使用 Virtualbox 托管Docker引擎。

$ export DOCKER_TLS_VERIFY="1"
$ export DOCKER_HOST="tcp://ip.of.virtual.machine:2376"
$ export DOCKER_CERT_PATH="/path/to/certificates/"

我现在不在 Mac 上,不记得使用的确切值。从 Kitematic gui 打开 Docker CLI 工具时,将设置相同的环境变量集。

如果您能找到正在使用的命令和值,您可以将这三个命令添加到 .bashrc.zshrc 或等效终端配置文件的底部,然后重新启动或采购 (source ~/.bashrc) 配置文件。

这将导致 docker 二进制文件默认使用 boot2docker virtualbox docker 引擎,即使您没有通过 Docker 工具箱打开终端工具(Kitematic 等)。

这可能取决于您使用的shell(例如,fish shell would only be supported in docker toolbox 1.8.2a

Issue 138 试过:

  1. Deleted anything in the system that mentions docker.
  2. Installed toolbox 1.8.1c.
  3. Ran the Docker Quickstart Terminal (which failed).
  4. Deleted ~/.docker
  5. Installed docker using

检查also the permission on ~/.docker

docker 工具箱现在使用 docker-machine 来创建 docker 主机。您看到的错误可能是因为您没有设置活动计算机。

首先确保您有一个 docker 主机 运行 docker-machine ls。然后用

设置一个活跃的机器
eval $(docker-machine env default)

其中 default 是 ls 输出的机器名称。

我创建了一个快速而简单的帮助程序,如果您愿意,可以使用它在提示中显示当前活动的机器:https://gist.github.com/aburnett/1165239cd2673a43579c