无法连接到 Docker 守护程序。 docker 守护进程是不是在此主机上运行?

Posted

技术标签:

【中文标题】无法连接到 Docker 守护程序。 docker 守护进程是不是在此主机上运行?【英文标题】:Cannot connect to the Docker daemon. Is the docker daemon running on this host?无法连接到 Docker 守护程序。 docker 守护进程是否在此主机上运行? 【发布时间】:2016-03-31 23:28:05 【问题描述】:

我在 ubuntu 14.04 上安装了 docker,它告诉我安装成功。然后我输入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:12:04 UTC 2015
 OS/Arch:      linux/amd64
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

我输入sudo service docker status,我得到了

docker start/running, process 8063

我试过sudo docker imagessudo docker info,得到了同样的回复:

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

不知道为什么返回这个,我尝试使用sudo docker pull ubuntu拉ubuntu,得到了

Using default tag: latest
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

请告诉我如何解决这个问题,如何拉取和运行 docker 镜像。 docker -ddocker deamon一样吗?

【问题讨论】:

Docker can't connect to docker daemon的可能重复 【参考方案1】:

您需要将当前用户添加到docker 组,如下所示:

sudo usermod -aG docker <your username>

另外,您可以使用USER 环境变量,例如:

sudo usermod -aG docker $USER

然后重新启动系统。正如码头工人documentation 所说:

docker 守护进程绑定到 Unix 套接字 而不是 TCP 端口。默认情况下 Unix socket归用户root所有,其他用户可以访问 与sudo。因此,docker daemon 始终以 root 身份运行 用户。

为避免在使用docker 命令时必须使用sudo,请创建一个 Unix 组称为docker 并向其添加用户。当 docker 守护进程 开始时,它使 Unix 套接字的所有权由 docker群组。

【讨论】:

我在 ubuntu 14.04 LTS 上得到了相同的输出,但是用我的用户名设置 sudo usermod -aG docker &lt;your username&gt; 不起作用。重新启动我的系统后,我仍然得到Cannot connect to the Docker daemon. Is the docker daemon running on this host? 相同。有什么想法吗? 对我来说也一样:ubuntu 14.04 LTS,sudo usermod ..etc...在 sudo docker ps 工作时不起作用... @chrx 你重启系统了吗?您也可以测试 ps06756 解决方案 是的,我确实尝试注销/登录并重新启动机器,但没有任何改变【参考方案2】:

如果将用户添加到docker 组不起作用,请尝试重新启动服务:

sudo service docker restart 

【讨论】:

【参考方案3】:

对我有用的唯一方法(在 ubuntu xenial 上):

sudo groupadd docker
sudo gpasswd -a $USER docker
sudo service docker restart
newgrp docker

找到here

【讨论】:

这对我有用,而添加 docker 组的其他答案没有。【参考方案4】:

在我的情况下,工作答案是

$ docker-machine create -d virtualbox default
$ eval "$(docker-machine env default)"

【讨论】:

这适用于 MacOS,但自 2017 年起不再适用【参考方案5】:

我不确定其他人是否使用过这种方法,但是当我遇到“docker daemon 在此主机上运行吗?”这个问题时,取消设置 docker 相关的环境变量有助于识别在我的机器上运行的 docker daemon。当我在终端窗口中打开一个新选项卡时会显示相同的错误消息,并且取消设置有助于解决它。

unset $!DOCKER_* 

【讨论】:

【参考方案6】:

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

ls -l /var/run/docker.sock

如果您不是所有者,请使用以下命令更改所有权:

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

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

【讨论】:

如果我在 /var/run/ 上找不到 docker.sock 怎么办? 如果缺少docker.sock,请尝试运行sudo service docker stop,然后运行sudo service docker start【参考方案7】:

无法连接到 Docker 守护程序。 docker daemon 是否在此主机上运行?

如果显示此错误,请检查您的类型代码:

->   docker build -t swagger-ui-builder .

正确给出。如果错过某个值显示错误。

参考本站:http://swagger.io/swagger-ui/

【讨论】:

以上是关于无法连接到 Docker 守护程序。 docker 守护进程是不是在此主机上运行?的主要内容,如果未能解决你的问题,请参考以下文章

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

Mac OS X sudo docker 无法连接到 Docker 守护程序。 docker 守护进程是不是在此主机上运行?

无法连接到 tcp://localhost:2375/ 上的 Docker 守护程序。 docker 守护进程是不是正在运行。在 GitLab 上

无法连接到 Ubuntu Windows 上 bash 上的 Docker 守护程序

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

Docker 构建失败 - 带有 GKE 的 Gitlab CI。无法通过 tcp://localhost:2375 连接到 Docker 守护程序。 docker 守护进程是不是正在运行?