当我把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

我怎么解决这个问题?


当前回答

如果你使用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

希望这能有所帮助。

其他回答

I also had the same issue. The problem was in sockets allocated to docker-daemon and docker-client. First, permission was not set for the docker-client on docker.sock You can set it using "sudo usermod -aG docker $USER" Then check your bash file where the docker-client is running, For me it was on 0.0.0.0:2375, while docker-daemon was running on unix socket.(It was set in the configuration file of dockerd). Just comment the bash-line and it'll work fine. But if you want to make it work on TCP port instead of unix socket, change the configuration file of dockerd and set it on 0.0.0.0.2375 and keep the line in bash as it is if present or set it to 0.0.0.0:2375.

你试过关机再开机吗?: -)

我在Mac电脑上升级到Docker 1.10.1后也遇到了同样的问题。 我做了以下事情:

在Docker快速入门终端上

美元的出口 美元的出口

then

Docker-machine kill default

然后重启Docker快速启动终端

这解决了我的问题。

如果上面所有的解决方案都不起作用,你可以尝试检查/var/run/docker.sock的所有权:

ls -l /var/run/docker.sock

如果你不是所有者,那么使用以下命令改变所有者:

sudo chown *your-username* /var/run/docker.sock

然后,您可以继续尝试轻松地执行Docker命令

以下Docker的DOC站点:以非root用户管理Docker

1)创建Docker组

sudo groupadd docker 

2)使用户属于docker组,以获得docker组的权限。

sudo usermod -aG docker $USER

检查shell是否设置了DOCKER_HOST环境变量。

env | grep DOCKER_HOST

如果它存在,

unset DOCKER_HOST

然后这应该工作:

docker run hello-world

在Mac OS-X上,这可能只是意味着docker安装已经过时或无法运行。只需从官方网站下载最新的docker并安装即可。

为我工作。