我正在关注此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所需的特定位置?如果是这样,那是什么?
答案 0 :(得分:1)
一种选择是放弃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>
您可以使用stop
,start
,restart
来管理泊坞机。
(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