【问题标题】: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一样吗?

【问题讨论】:

标签: ubuntu docker


【解决方案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/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-08
        • 2016-07-11
        • 1970-01-01
        • 2014-10-13
        • 1970-01-01
        • 2021-10-27
        • 1970-01-01
        相关资源
        最近更新 更多