Docker - 无法连接到 Docker 守护程序

4
我开始遇到一个问题。
ERROR: Couldn't connect to Docker daemon - you might need to run `docker-machine start default`. 

但是我没有使用 docker-machine(尽管我安装了版本0.5.2)。

我在我的 Ubuntu 14.04 LTS 上直接运行 Docker,使用的版本为 Docker 1.11.0Docker-compose 1.7.0

为什么会出现这个错误?我应该卸载 docker-machine 吗,因为我不使用它,还是应该升级它?或者问题是其他方面引起的?


docker 守护进程是否正在运行? - larsks
是的,否则它将无法启动Docker Compose。它运行起来了,但似乎由于某些原因而崩溃了。 - psychok7
我升级了Docker Machine到0.7.0版本。让我看看它是否会再次发生。 - psychok7
升级docker-machine没有帮助。我执行sudo service docker status,即使出现错误消息,docker仍在运行。我该如何卸载docker-machine? - psychok7
你的问题缺少一些相关信息。你运行的命令是什么,导致出现错误?你当前的用户运行该命令吗?你能确认它实际上没有使用 docker-machine ls 的输出来操作机器吗? - Andy Shinn
显示剩余2条评论
2个回答

4
没有更多的信息很难知道具体是什么问题。但在 Docker Machine 之外,通常会因为您的用户不在 docker 组中而出错。默认情况下,套接字不允许除 root 以外的用户使用该套接字。
您可以在 https://docs.docker.com/engine/installation/linux/ubuntulinux/#create-a-docker-group 找到更多信息和解决方案。但通常情况下,您只需要使用命令 sudo usermod -aG docker $USER 将用户添加到 docker 组中即可。
但是,您需要注意,这相当于授予该用户 root 权限。您允许该用户运行可以作为 root 挂载文件夹的 Docker 容器。

我的用户已经在docker组中了...当我运行docker-machine ls时,没有正在运行的虚拟机,但是有一个显示错误“机器不存在”,但它来自另一个项目。我可以卸载docker-machine吗?我该如何做到这一点? - psychok7
顺便说一下,我正在运行 docker-compose run --rm web bash,然后在里面运行 Python Selenium,它开始运行得很好,但有时会崩溃并导致所有容器都被杀死。 - psychok7
那并没有什么意义。该错误是由客户端尝试连接到守护程序引起的。我不明白为什么在您已经打开容器命名空间的情况下会出现该错误。请参阅我的评论以获取其他信息。给定的信息不足且尚不太合理... - Andy Shinn

0

我曾经遇到过同样的问题,不得不将 dockerdocker.sockdocker.pid 的所有权从 root:root 更改为位于 /var/run/$USER:docker,因为这是在尝试连接到 Docker 守护程序时出现了权限被拒绝的情况。更多有用的信息请参见 此处

授予非 root 用户访问权限

Docker 守护程序始终以 root 用户身份运行,并且自 Docker 版本 0.5.2 以来,Docker 守护程序绑定到 Unix 套接字而不是 TCP 端口。默认情况下,该 Unix 套接字归属于 root 用户,因此,默认情况下,您可以使用 sudo 访问它。

从版本 0.5.3 开始,如果您(或您的 Docker 安装程序)创建了一个名为 docker 的 Unix 组并向其中添加用户,则 Docker 守护程序将在启动时将 Unix 套接字的所有权设置为可读/可写的 docker 组。


docker.sock 的默认用户组是 docker。但它可以被 -G 标志覆盖。为什么你的 docker.sock 所有者组是 root? - Light.G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接