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

时间:2015-12-30 15:51:38

标签: ubuntu terminal 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.

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 Version

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

非常感谢任何帮助。如果您可能需要更多信息,请与我们联系。

20 个答案:

答案 0 :(得分:168)

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

答案 1 :(得分:13)

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

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

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

Docker可以作为具有适当组权限的非root用户(没有sudo)运行。 Linux post-install docs有详细信息。简短版本:

$ 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组中的用户在没有docker的情况下运行docker-composesudo命令。 Docker本身运行根,允许一些攻击,所以你仍然需要小心你运行的容器。有关详细信息,请参阅Docker Security Documentation

答案 2 :(得分:9)

只需尝试使用sudo。似乎是权限问题!

sudo docker-compose -f docker-compose-deps.yml up -d

对我有用。

答案 3 :(得分:8)

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

service docker start

请勿忘记将您的用户包含在泊坞小组中。

答案 4 :(得分:6)

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

sudo usermod -aG docker $USER

重要提示:请记住退出系统(不仅仅是终端),然后重新登录才能生效!

答案 5 :(得分:4)

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

答案 6 :(得分:4)

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

docker info

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

  

尝试在unix:///var/run/docker.sock上连接到Docker守护进程套接字时,获得权限被拒绝:获取Introduction to FXML:拨打unix /var/run/docker.sock:connect:权限拒绝

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

sudo chown $USER /var/run/docker.sock

等等!

答案 7 :(得分:3)

从“ps aux | grep docker”的输出,看起来docker守护程序没有运行。尝试使用以下方法查看错误以及docker未启动的原因

  1. 检查泊坞日志
  2. $ sudo tail -f /var/log/upstart/docker.log

    1. 尝试在调试模式下启动docker
    2. $ sudo docker -d -D

答案 8 :(得分:2)

在我的情况下,您的泊坞窗服务可能会停止

启动docker服务的命令:

$ sudo systemctl start docker

验证是否启动的命令:

$ sudo docker run hello-world

答案 9 :(得分:2)

在我的情况下,是因为ubuntu许可,

  1. 列表项

通过

检查权限
docker info 

如果他们打印问题许可, enter image description here 然后使用

sudo chmod -R 777 /var/run/docker.sock

答案 10 :(得分:1)

我使用Ubuntu 16.04,并在使用docker-compose时也发现了此问题。 我通过运行此命令对其进行了修复。

$ sudo systemctl start docker
$ sudo docker-compose build

答案 11 :(得分:1)

出现此错误的另一个原因:对我来说,这是docker-compose.yml中错误的图像路径定义:

  service:
    image: ${CONTAINER_REGISTRY_BASE}/my-service
   ...

Lookis首先可以,但是我在环境上设置了CONTAINER_REGISTRY_BASE=eu.gcr.io/my-project/。显然,图像路径中的//导致了此错误。

docker-compose: v.1.21.2
docker: 18.03.1-ce

答案 12 :(得分:0)

sudo的身份运行此命令可以为我解决问题

答案 13 :(得分:0)

在我的例子中,问题出在不合适的图片标签名称 -backend - 以短划线开头:

失败:

version: '2.4'

services:
  my-service:
    container_name: my.backend
    image: imagename:-backend
    build:
      context: .
    

错误信息:

ERROR: Couldn't connect to Docker daemon - you might need to run `docker-machine start default`.

工作:my-backend

version: '2.4'

services:
  my-service:
    container_name: my.backend
    image: imagename:my-backend
    build:
      context: .
    

答案 14 :(得分:0)

我认为这是由于访问权,您只需要写

sudo docker-compose-deps.yml up

答案 15 :(得分:0)

对我来说,解决方法是使用this article安装docker-compose的较新版本(1.24)。

先前的版本(1.17)是从ubuntu的默认存储库安装的,但是在安装了较新的版本后,我设法启动了该容器。希望对别人有帮助。

答案 16 :(得分:0)

删除默认计算机的可能性很小吗? 但是,首先检查所有文件是否都存在(OSX,在其他系统上类似)

brew install docker docker-compose docker-machine xhyve docker-machine-driver-xhyve
brew link docker docker-compose docker-machine xhyve docker-machine-driver-xhyve

sudo chown root:wheel /usr/local/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve
sudo chmod u+s /usr/local/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve

另外,安装Docker App,因为它更容易维护容器:

brew cask reinstall docker

从发现程序启动Docker应用(等待直到服务完全启动)

然后,使用以下命令检查安装:

docker-machine ls

如果列表中没有计算机,请创建并启动:

docker-machine create default
docker-machine start default

在此之后,构建,撰写和所有其他命令应正常工作。

答案 17 :(得分:0)

在我的情况下,当我尝试docker-compose build时,会遇到相同的错误 而我的解决方案只是添加sudo

sudo docker-compose build

答案 18 :(得分:0)

您应使用以下方式将用户添加到“ docker”组:

sudo usermod -aG docker your-user

答案 19 :(得分:0)

我找到了这个,似乎解决了我的问题。

GitHub Fix Docker Daemon Crash

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