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.

码头工人版本

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

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

256420 次浏览

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

  1. 检查docker日志

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

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

$ sudo docker -d -d

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

GitHub Fix Docker Daemon崩溃

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

经过15分钟的调试后,我也犯了同样的错误。结果它只需要一个sudo:)

检查以非root用户管理Docker以去除sudo前缀。

我也有同样的问题。在做了笔记和分析了一些调试结果后,最终解决了什么可以是同样的错误。首先启动服务,

service docker start

别忘了把你的用户加入docker组。

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

看来你的问题是由一个旧的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可以作为具有适当组权限的非根用户(没有sudo)运行。Linux post-install文档有详细信息。简短的版本:

$ 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安全文档

在我的情况下,你的码头服务可能会停止

启动docker服务:

$ sudo systemctl start docker

命令来验证是否启动:

$ sudo docker run hello-world

我有这个问题,不想用sudo把事情搞砸。在调查时,我试图得到一些信息:

docker info

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

在unix:///var/run/ Docker上尝试连接Docker守护进程套接字时被拒绝权限。sock: Get http:///var/run/docker.sock/v1.38/info: dial unix /var/run/docker。Sock: connect:拒绝权限

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

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

Et voilà !

我使用Ubuntu 16.04,当我使用docker-compose时也发现了这个问题。

.

.
$ sudo systemctl start docker
$ sudo docker-compose build

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

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

Lookis ok'ish first,但我在env上设置了CONTAINER_REGISTRY_BASE=eu.gcr.io/my-project/。显然,图像路径中的//导致了这个错误。

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

你应该像这样把你的用户添加到docker组:

sudo usermod -aG docker ${USER}

在我的情况下,a有相同的错误,当我尝试docker-compose build 和我的解决方案只是添加sudo

sudo docker-compose build

是否有轻微的可能性你删除了默认的机器? 但是,首先检查是否所有文件都在(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

从finder启动Docker应用程序(等待服务完全启动)

然后用以下方法检查安装情况:

docker-machine ls

如果列表中没有机器,创建一个并启动它:

docker-machine create default
docker-machine start default

在此之后,构建、组合和所有其他命令应该正常工作。

对我来说,解决办法是使用这篇文章安装一个较新的docker-compose版本(1.24)。

之前的版本(1.17)是从ubuntu的默认存储库安装的,但在安装了新版本后,我设法启动了容器。希望它能帮助到一些人。

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

sudo docker-compose-deps.yml up

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

sudo usermod -aG docker $USER

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

试试sudo。这似乎是许可问题!

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

这对我很管用。

在我的例子中,这是因为ubuntu权限,

  1. 列表项

检查权限

docker info

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

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

在我的例子中,问题是不合适的图像标签名称-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: .
    

它帮助我找到sudo chown -Rv someuser.someuser ~someuser/docker_compose_dir/,其中someuser是我在其中运行docker-compose的用户。在那之后,docker-compose进行得很顺利。

您需要在后docker安装组配置权限


sudo usermod -aG docker ${USER}
su - ${USER}
id -nG
sudo usermod -aG docker username

在你的终端上一个接一个的运行上面的命令,如果你真的想知道每一步意味着什么,检查(步骤2)出在这里

然后再次尝试连接

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