Docker-Compose无法连接到Docker Daemon

我收到一条错误消息,说我无法连接到docker守护进程。 我已经看过其他人有类似问题的答案,但没有帮助。 我正在运行Ubuntu 15.10的版本。 我会尽力提供所有的信息。

root@# docker-compose -f docker-compose-deps.yml up -d ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running? If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable. 

Docker版本

 root@# sudo docker version Client: Version: 1.9.1 API version: 1.21 Go version: go1.4.2 Git commit: a34a1d5 Built: Fri Nov 20 13:20:08 UTC 2015 OS/Arch: linux/amd64 Cannot connect to the Docker daemon. Is the docker daemon running on this host? 

Docker-Compose版本

 root@# docker-compose --version docker-compose version 1.5.2, build 7240ff3 

这是如果我尝试停止或启动服务会发生什么…

 root@# sudo service docker stop stop: Unknown instance: root@# sudo service docker start docker start/running, process 5375 

如果我运行ps aux | grep docker ps aux | grep docker

 root@# ps aux | grep docker root 4233 0.0 0.0 13692 2204 pts/15 S+ 10:27 0:00 grep --color=auto docker 

任何帮助将不胜感激。 让我知道你是否可能需要更多的信息。

在调试15分钟后,我有同样的错误。 事实证明,所有它需要的是一个sudo :)检查[创建一个Docker组]在这里https://docs.docker.com/engine/installation/linux/ubuntulinux/摆脱sudo前缀。

我遇到过同样的问题。 在记录和分析一些调试结果之后,我终于解决了什么可能是同样的错误。 首先启动服务,

service docker start

不要忘记把你的用户加入到码头组中。

从“ps aux | grep docker”的输出中,看起来像docker守护程序没有运行。 尝试使用下面的方法,看看有什么不对,为什么码头没有启动

  1. 检查码头日志

$ sudo tail -f /var/log/upstart/docker.log

  1. 尝试在调试模式下启动docker

$ sudo docker -d -D

Dockerfile目录中有当前用户无法访问的文件时,出现此错误。 因此, docker不能将完整的上下文上传到守护进程,并在“ http + docker:// localunixsocket ”消息中引入了“ 无法连接到Docker守护进程 ”。

看来你的问题是由一个旧的Docker错误创建的,在Docker崩溃之后socket文件没有被重新创建。 如果这是问题,那么重命名套接字文件应该允许它被重新创建:

 $ sudo service docker stop $ sudo mv /var/lib/docker /var/lib/docker.bak $ sudo service docker start 

由于这个bug已经修复,大多数人得到错误Couldn't connect to Docker daemon可能会得到它,因为它们不在docker组中,并且没有读取该文件的权限。 与sudo docker ...运行sudo docker ...将解决,但不是一个很好的解决方案。

Docker可以作为非root用户运行(没有sudo ),具有适当的组权限。 Linux后安装文档有详细信息。 简短版本:

 $ sudo groupadd docker $ sudo usermod -aG docker $USER # Log out and log back in again to apply the groups $ groups # docker should be in the list of groups for your user $ docker run hello-world # Works without sudo 

这使得docker组中的用户可以在不使用sudo情况下运行dockerdocker-compose命令。 Docker本身运行一个根,允许一些攻击,所以你仍然需要小心你运行的容器。 请参阅Docker安全性文档了解更多详细信息

我发现这似乎解决了我的问题。

GitHub修复Docker守护进程崩溃

我改变了我的docker-compose-deps.yml文件的内容,如链接所示。 然后我运行docker-compose -f docker-compose-deps.yml up -d 。 然后我把它改回来,出于某种原因。 我不必在我提供的链接中继续执行这些步骤,但前两步为我解决了这个问题。