Docker: 无法连接到 Docker 守护进程

13

我正在运行Ubuntu,并安装了以下docker软件:

$ docker version
Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.3
 Git commit:   a34a1d5
 Built:        Fri Nov 20 17:56:04 UTC 2015
 OS/Arch:      linux/amd64
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

$ docker-compose -v
docker-compose version 1.7.0, build 0d7bf73

尝试运行docker-compose时,我收到以下错误提示:
$ sudo docker-compose up
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.

我尝试了以下方法:

systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service

sudo service docker status
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2016-04-29 13:36:57 CEST; 4min 3s ago
     Docs: https://docs.docker.com
 Main PID: 6394 (docker)
   Memory: 13.3M
      CPU: 119ms
   CGroup: /system.slice/docker.service
           └─6394 /usr/bin/docker daemon -H fd://

Apr 29 13:36:57 Charles docker[6394]: time="2016-04-29T13:36:57.722083467+02:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon opt...d IP address"
Apr 29 13:36:57 Charles docker[6394]: time="2016-04-29T13:36:57.805189862+02:00" level=warning msg="Your kernel does not support swap memory limit."
Apr 29 13:36:57 Charles docker[6394]: time="2016-04-29T13:36:57.827955299+02:00" level=info msg="Loading containers: start."
Apr 29 13:36:57 Charles docker[6394]: time="2016-04-29T13:36:57.828083895+02:00" level=info msg="Loading containers: done."
Apr 29 13:36:57 Charles docker[6394]: time="2016-04-29T13:36:57.828095512+02:00" level=info msg="Daemon has completed initialization"
Apr 29 13:36:57 Charles docker[6394]: time="2016-04-29T13:36:57.828125198+02:00" level=info msg="Docker daemon" commit=a34a1d5 execdriver=native-0.2 graphdriver=aufs version=1.9.1
Apr 29 13:36:57 Charles systemd[1]: Started Docker Application Container Engine.
Apr 29 13:37:10 Charles systemd[1]: Started Docker Application Container Engine.
Apr 29 13:37:34 Charles systemd[1]: Started Docker Application Container Engine.
Apr 29 13:38:01 Charles systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.
anton@Charles:~/Documents/software/deliverable$ docker ps
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Sudo?

当我使用sudo运行时,docker似乎正在运行:

$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$ docker ps
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

我该如何解决这个问题?

你能验证一下使用 systemctl 或者你正在使用的任何服务管理器吗? - Rick
看起来这似乎是 https://dev59.com/w1wX5IYBdhLWcg3wpgym 的重复。 - Rick
可能是重复的问题:无法从docker-compose连接到docker - Gangaraju
所以,守护进程正在运行,但是您无法连接到它。您是否在docker用户组中,就像我的提到的重复建议那样?您可以通过在 shell 上执行groups来检查。 - Rick
@Magick,很高兴你解决了它,但我要说,这确实是一个重复的问题 ;) - Rick
显示剩余7条评论
2个回答

22

1
对于每个想要避免添加 sudo 的人: https://www.digitalocean.com/community/questions/how-to-fix-docker-got-permission-denied-while-trying-to-connect-to-the-docker-daemon-socket - Abhay Maniyar
@AbhayManiyar,你应该添加一个包含这些指令的答案。这是正确的方法,而不需要使用sudo。 - dohpaz42

1

看看这个帖子。它似乎处理相同的问题。

回答:

Docker机器正在运行。但是,您需要导出一些环境以连接到Docker机器。默认情况下,docker CLI客户端尝试使用http + unix://var/run/docker.sock与守护程序通信(如错误消息所示)。

使用eval $(docker-machine env dev)导出正确的环境变量,然后再次尝试。您还可以只运行docker-machine env dev以查看它将导出的环境变量。请注意,其中一个是DOCKER_HOST,就像错误消息建议您设置的那样。


我没有安装 docker-machine。我需要安装吗? - Magick
1
Docker Machine只是一个用于管理多个Docker实例的工具。你不一定需要它,但显然在链接的线程中被使用了。 - Rick

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