it-swarm.asia

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

我收到一条错误消息,指出我无法连接到docker守护程序。我已经调查了其他人的答案,他们有类似的问题,但没有帮助。我正在运行Ubuntu 15.10的版本。我会尽力提供我所拥有的所有信息。

[email protected]# 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版本

[email protected]# 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版本

[email protected]# docker-compose --version
docker-compose version 1.5.2, build 7240ff3

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

[email protected]# Sudo service docker stop
stop: Unknown instance: 
[email protected]# Sudo service   docker start
docker start/running, process 5375

如果我运行ps aux | grep docker

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

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

58
daveskylark

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

GitHub修复Docker守护程序崩溃

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

0
daveskylark

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

166
Mahmoud Zalt

看来您的问题是由旧的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安装后文档 有详细信息。简短版本:

$ 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的情况下运行Sudodocker-compose命令。 Docker本身运行根,允许一些攻击,所以你仍然需要小心你运行的容器。有关详细信息,请参阅 Docker安全文档

12
jwhitlock

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

service docker start

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

8
R A

我有这个问题,并且不想使用Sudo搞砸了。在调查时,我试图获得一些信息:

docker info

好极了,我有以下错误:

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

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

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

Etvoilà!

4
madjaoue

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

4
cweiske

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

  1. 检查泊坞窗日志

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

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

$ Sudo docker -d -D

3
Manish R

在我的情况下,你的docker服务可能会被停止

启动docker服务的命令:

$ Sudo systemctl start docker

用于验证是否启动的命令:

$ Sudo docker run hello-world

2
John_J

当我使用docker-compose时,我使用了Ubuntu 16.04并发现了这个问题。我通过运行此命令修复它。

$ Sudo systemctl start docker
$ Sudo docker-compose build
1
Khachornchit Songsaen

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

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

首先看起来很好,但我在env上设置了CONTAINER_REGISTRY_BASE=eu.gcr.io/my-project/。显然,图像路径中的//导致了这个错误。

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

Sudo运行此操作为我解决了问题

0
Mohamed Diouane