Docker + PHP – 错误:无法连接到Docker守护进程?

我正在按照这个指南来设置一个Docker的PHP开发环境。

在桌面 docker-compose.yml docker-php 创build了一个文件夹并在其中添加了一个docker-compose.yml文件,内容如下:

 nginx: image: nginx:latest ports: - 80:80 

在我的terminal上:

 $ cd /home/my-username/Desktop/docker-php/ $ docker-compose up -d 

我得到这个错误:

错误:无法连接到Docker守护进程在http + docker:// localunixsocket – 它运行吗?

如果位于非标准位置,请使用DOCKER_HOST环境variables指定URL。

我在Xubuntu 16.04上。

或者,也许我应该把文件夹放在Docker所需的特定位置? 如果是这样,那是哪个?

你可以使用本地的Docker

一种select是放弃docker-machine并在系统上使用本机Docker设置。 既然你在Linux(Xubuntu)上,这是你的select。 docker-machine是那些无法自然运行Docker(Mac或Windows)的用户最常使用的,并且用它来在他们的操作系统上安装支持Docker的虚拟机和一些本地命令来与之通信。

你可以在这里findLinux上Docker的安装文档。

但是,您已经安装了docker-machine,因此这可能是您最具破坏性的选项。

您的docker机可能没有运行

你得到的错误是说,Docker客户端不能与服务器通话。 一个潜在的原因是你的docker-machine虚拟机没有运行。 你应该validation它正在运行,如果没有,启动它。

要获得您的docker机(可能是一个或多个)的列表:

 docker-machine ls 

你可能会有一台名为default机器,但是你可能有更多的机器,这取决于你的设置。

您可以通过以下方式获取当前状态:

 docker-machine status <machine-name> 

你可以使用stopstartrestart来pipe理docker-machine。

(更多信息请参阅Docker机器人CLI参考 。)

你需要适当的环境设置

docker机依靠环境variables正常工作。 因为您可能有多个docker机设置,所以您必须告诉客户端使用哪一个。

要设置环境,可以从docker-machine命令中获取。

 docker-machine env <machine-name> 

你可以自动将其注入到环境中(这可能是一个有用的东西放入你的shell启动文件)。

 eval "$(docker-machine env <machine-name>)" 

你应该得到与这些类似的环境variables:

 DOCKER_HOST=tcp://192.168.99.101:2376 DOCKER_CERT_PATH=/Users/nathanleclaire/.docker/machines/.client DOCKER_TLS_VERIFY=1 DOCKER_MACHINE_NAME=dev 

请记住,你应该在这里使用evalforms,而不是只运行env命令并将输出粘贴到你的shell设置中。 它可能会改变docker,机器重新启动等,所以你不能依靠旧的设置,以后仍然工作。

如果你的docker-machine正在运行,并且设置了这些env vars,你的docker和docker-compose命令应该可以工作。

解:

 sudo usermod -a -G docker USERNAME