我得到一个错误消息,说我不能连接到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.

码头工人版本

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

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

任何帮助都将不胜感激。如果你还需要其他信息,请告诉我。


当前回答

最终解决方案: 首先执行以下命令:sudo chown $USER /var/run/docker.sock 然后执行命令:docker-compose up -d——build

其他回答

从“ps aux | grep docker”的输出,它看起来像docker守护进程没有运行。尝试使用下面的方法,看看哪里出了问题,为什么docker没有启动

检查docker日志

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

尝试在调试模式下启动docker

$ sudo docker -d -d

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

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

由于此错误已修复,大多数人得到错误无法连接到Docker守护进程可能是因为他们不在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的情况下运行docker和docker-compose命令。Docker本身运行一个根,允许一些攻击,所以你仍然需要小心你运行的容器。更多细节请参见Docker安全文档。

当Dockerfile目录中的文件不能被当前用户访问时,我得到了这个错误。docker因此不能上传完整的上下文到守护进程,并带来“无法连接到docker守护进程at http+docker://localunixsocket”消息。

最终解决方案: 首先执行以下命令:sudo chown $USER /var/run/docker.sock 然后执行命令:docker-compose up -d——build

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

GitHub修复Docker守护进程崩溃

我修改了docker-compose-deps的内容。Yml文件,见链接。然后我运行docker-compose -f docker-compose-deps。Yml up -d。然后我把它改回来,不知为什么它还能用。我不需要继续我提供的链接中的步骤,但前两个步骤为我解决了这个问题。