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

dav*_*ark 79 terminal ubuntu docker docker-compose

我收到一条错误消息,指出我无法连接到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.
Run Code Online (Sandbox Code Playgroud)

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?
Run Code Online (Sandbox Code Playgroud)

Docker-Compose版本

root@# docker-compose --version
docker-compose version 1.5.2, build 7240ff3
Run Code Online (Sandbox Code Playgroud)

如果我尝试停止或启动服务会发生这种情况......

root@# sudo service docker stop
stop: Unknown instance: 
root@# sudo service   docker start
docker start/running, process 5375
Run Code Online (Sandbox Code Playgroud)

如果我跑 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
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.如果您可能需要更多信息,请与我们联系.

Mah*_*alt 198

调试15分钟后,我遇到了同样的错误.原来所有它需要的是sudo:)查看[创建一个Docker组]这里https://docs.docker.com/engine/installation/linux/ubuntulinux/摆脱sudo前缀.

  • 他们需要更好的错误= /这个问题有13,000次观看 (26认同)
  • 真正的解决方法是创建docker组,而在我看来,`sudo`只是一个解决方法/黑客攻击.由于这里没有解释组创建部分,只给出了一个链接,并且该链接的内容发生了变化,我认为这是一个仅链接的答案,现在它基本上没用(对于真正的修复部分).你可以添加如何添加该组的描述吗? (4认同)
  • 基本上,您需要做的就是`sudo usermod -aG docker $ USER`,之后它将继续工作. (4认同)
  • 男人,你只为那些投票的人节省了大约30个小时,可能只有1%的时间你确实存了 (3认同)
  • 我认为``sudo''也是一个坏主意。请参阅Docker文档以非root用户身份管理Docker:https://docs.docker.com/engine/installation/linux/linux-postinstall/#manage-docker-as-a-non-root-user (2认同)

jwh*_*ock 18

看来您的问题是由旧的Docker错误创建的,其中Docker崩溃后没有重新创建套接字文件.如果这是问题,那么重命名套接字文件应该允许重新创建它:

$ sudo service docker stop
$ sudo mv /var/lib/docker /var/lib/docker.bak
$ sudo service docker start
Run Code Online (Sandbox Code Playgroud)

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

Docker可以作为sudo具有适当组权限的非root用户(没有)运行.在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
Run Code Online (Sandbox Code Playgroud)

这允许docker组中的用户无需运行dockerdocker-compose命令sudo.Docker本身运行根,允许一些攻击,所以你仍然需要小心你运行的容器.有关详细信息,请参阅Docker安全文档.


mad*_*oue 17

我遇到了这个问题,不想使用搞乱事情sudo。调查时,我尝试获取一些信息:

docker info
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,我遇到以下错误:

尝试连接到unix:///var/run/docker.sock上的Docker守护程序套接字时获得的权限被拒绝:获取http:///var/run/docker.sock/v1.38/info:拨打unix / var /run/docker.sock:连接:权限被拒绝

由于某种原因,我没有足够的特权,以下命令解决了我的问题:

sudo chown $USER /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)

等等!

  • 也适合我:) (4认同)
  • @Adam,如[Docker doc](https://docs.docker.com/engine/install/linux-postinstall/)中所述,您可以使用(1st)`sudo groupadd docker`然后(2)`sudo usermod解决这个问题-aG docker $USER` (2认同)

Dem*_*zer 13

试试吧sudo。好像是权限问题!

sudo docker-compose -f docker-compose-deps.yml up -d
Run Code Online (Sandbox Code Playgroud)

它对我有用。


小智 9

我遇到过同样的问题.在记笔记并分析一些调试结果后,最后,我解决了可能是同一个错误.首先启动服务,

service docker start

不要忘记将用户包含在docker组中.


zhi*_*ker 9

您应该使用以下内容将您的用户添加到“docker”组:

sudo usermod -aG docker ${USER}


cwe*_*ske 7

Dockerfile目录中存在当前用户无法访问的文件时,我收到此错误。docker因此无法将完整的上下文上传到守护程序并带来“无法在 http+docker://localunixsocket 处连接到 Docker 守护程序”消息。

  • 谢谢!这为我解决了它。易于检查,因为所有 docker 命令都有效,但 docker-compose 没有。docker-compose 也在另一个目录中工作。非常具有误导性的错误消息,顺便说一句。 (2认同)

小智 7

解决此问题的一种方法是首先docker通过运行以下命令将您的用户添加到组中

sudo usermod -aG docker $USER
Run Code Online (Sandbox Code Playgroud)

重要提示:请记住退出您的系统(不仅仅是您的终端)并重新登录以使其生效!


joe*_*hoa 7

就我而言,这是因为 ubuntu 许可,

  1. 项目清单

检查许可

docker info 
Run Code Online (Sandbox Code Playgroud)

如果他们打印问题许可, 在此处输入图片说明 然后使用

sudo chmod -R 777 /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)


dav*_*ark -3

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

GitHub 修复 Docker 守护进程崩溃

我更改了 docker-compose-deps.yml 文件的内容,如链接中所示。然后我就跑了docker-compose -f docker-compose-deps.yml up -d。然后我把它改回来并且由于某种原因它起作用了。我不必继续我提供的链接中的步骤,但前两个步骤为我解决了问题。

  • ubuntu 16.04 :只需添加 sudo: sudo docker-compose up -d (2认同)