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 试过:
- Deleted anything in the system that mentions docker.
- Installed toolbox 1.8.1c.
- Ran the Docker Quickstart Terminal (which failed).
- Deleted ~/.docker
- Installed docker using
docker 工具箱现在使用 docker-machine 来创建 docker 主机。您看到的错误可能是因为您没有设置活动计算机。
首先确保您有一个 docker 主机 运行 docker-machine ls
。然后用
设置一个活跃的机器
eval $(docker-machine env default)
其中 default 是 ls 输出的机器名称。
我创建了一个快速而简单的帮助程序,如果您愿意,可以使用它在提示中显示当前活动的机器:https://gist.github.com/aburnett/1165239cd2673a43579c
我曾经安装过 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 试过:
- Deleted anything in the system that mentions docker.
- Installed toolbox 1.8.1c.
- Ran the Docker Quickstart Terminal (which failed).
- Deleted ~/.docker
- Installed docker using
docker 工具箱现在使用 docker-machine 来创建 docker 主机。您看到的错误可能是因为您没有设置活动计算机。
首先确保您有一个 docker 主机 运行 docker-machine ls
。然后用
eval $(docker-machine env default)
其中 default 是 ls 输出的机器名称。
我创建了一个快速而简单的帮助程序,如果您愿意,可以使用它在提示中显示当前活动的机器:https://gist.github.com/aburnett/1165239cd2673a43579c