Docker + PHP - 错误:无法连接到Docker守护程序?

时间:2017-01-01 15:16:45

标签: php docker docker-compose

我正在关注此guide以使用Docker建立PHP开发环境。

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

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

在我的终端上:

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

我收到此错误:

  

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

     

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

我在Xubuntu 16.04上。

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

3 个答案:

答案 0 :(得分:1)

您可以使用本机Docker

一种选择是放弃docker-machine并在系统上使用本机Docker设置。由于您使用的是Linux(Xubuntu),因此这是一个选项。 docker-machine最常用于那些无法本机运行Docker(Mac或Windows)的用户,并使用它来安装支持Docker的VM和一些本地命令,以便与它通信。

您可以在Linux here上找到Docker的安装文档。

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

你的泊坞机可能没有运行

您遇到的错误是说Docker客户端无法与服务器通信。一个潜在的原因是你的docker-machine VM没有运行。您应该验证它是否正在运行,如果没有,请启动它。

获取docker-machines列表(可能是一个或多个):

docker-machine ls

您可能会有一台名为default的计算机,但您可能会有更多计算机,具体取决于您的设置方式。

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

docker-machine status <machine-name>

您可以使用stopstartrestart来管理泊坞机。

Docker Machine CLI reference中的更多内容。)

您需要适当的环境集

docker-machine依赖于环境变量才能正常工作。因为您可能有多个docker-machine设置,所以您必须告诉客户端使用哪个。

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

docker-machine env <machine-name>

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

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

你应该得到与以下类似的env变种:

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

请记住,您应该在此处使用eval表单,而不仅仅是运行env命令并将输出粘贴到shell设置中;它可能会在Docker-machine重启等时发生变化,因此您不能依赖旧的设置以便以后继续工作。

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

答案 1 :(得分:1)

此错误的最常见原因是您在没有sudo的情况下运行了“ docker-compose up”。只要安装了Docker并且启动并运行它,您就可能在docker命令中缺少sudo。

答案 2 :(得分:0)

解决方案:

sudo usermod -a -G docker USERNAME