当我把Docker版本更新到0.8.0后,我在输入sudo Docker version时得到了一个错误消息:

Client version: 0.8.0
Go version (client): go1.2
Git commit (client): cc3a8c8
2014/02/19 12:54:16 Can't connect to docker daemon. Is 'docker -d' running on this host?

我按照说明,输入命令sudo docker -d,我得到了这个:

[/var/lib/docker|2462000b] +job initserver()
[/var/lib/docker|2462000b.initserver()] Creating server
open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory[/var/lib/docker|2462000b] -job initserver() = ERR (1)
2014/02/19 12:55:57 initserver: open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory

我怎么解决这个问题?


当前回答

经过详细的调查,这个问题似乎每次在Mac OS X重新启动(或Docker虚拟机重新启动)后都会发生,这会阻止Docker客户端连接到Docker守护进程。

要解决这个问题,你可以:

A)使用官方安装程序(https://www.docker.com/products/docker-toolbox)重新安装Docker工具箱,或者简单地

B)依次执行以下命令:

# First make sure that the virtual machine is running
docker-machine start default

# Regenerate TLS connection certs, requires confirmation
docker-machine regenerate-certs default

# Finally, set env
eval "$(docker-machine env default)"

C)和(B)一样,你也可以复制粘贴下面这行来运行所有三个命令:

docker-machine start default; docker-machine regenerate-certs default; eval "$(docker-machine env default)"

如果你得到以下错误:

Error getting SSH command: Something went wrong running an SSH command!
command : cat /etc/os-release
err     : exit status 255
output  :

只要再次重新运行这三个命令,第二次就可以工作了。

其他回答

如果你使用gitlab-ci / gitlab-runners,如果你没有访问/var/run/docker.sock的权限,你就会得到这个错误。

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

解决问题:

sudo usermod -aG docker gitlab-runner

验证:

sudo -u gitlab-runner -H docker info

希望这能有所帮助。

如果重新生成TLS证书不起作用

docker-machine regenerate-certs default

尝试重新启动docker机器并设置env变量:

docker-machine restart default
eval $(docker-machine env default)

检查机器是否运行:

docker-machine ls

或者

docker run hello-world

这对我很管用。但是,如果您仍然没有启动守护进程,Docker的故障排除页面详细说明了停止、删除和创建新机器的过程。

这种情况通常不会发生。但是有一天,消息出现了(如下所示),一个简单的重启修复了它

unix:///var/run/ Docker .sock无法连接到Docker守护进程。docker守护进程正在运行吗?

执行ps aux | grep docker查看守护进程是否正在运行。如果没有,执行/etc/init.d /码头工人开始

如果你得到消息无法连接到docker守护进程。这个主机上正在运行docker -d吗?,你可以通过docker版本来检查。

如果你看到Docker Client is running。但是Docker服务器不是,很明显你需要启动Docker服务器。

在CentOS中,您可以使用service来启动或停止Docker服务器。

$ sudo service docker stop
$ sudo service docker start

然后输入docker version,就会得到docker Client和docker Server的信息,说明docker守护进程已经启动。